正在发生奇怪的事情。我认为我可以在某个时候使用它,但是现在由于某种原因它没有起作用。我正在尝试上传简历(Word文档)和视频文件,并将它们同时存储到我的数据库中。我的存储方法可行,但我的更新方法却很奇怪。简历文件被放置在storage / app / public / resumes中,但是如果用户的个人资料中已经有简历,并且想用新的简历更新其个人资料,则说明更新不正确。
我的设置方法是,2个表job_seeker_profiles带有resume_id列,而resumes表带有file列,该文件存储文件路径,我在这两个表之间创建了关系。另外请注意,我将其设置为如果他们上传新的简历,则旧的简历将被删除。
这就是正在发生的事情。单击“更新”按钮后,如果履历表中的id列为10,它将在job_seeker_profiles表的resume_id列中插入11。不管我做什么,总是相差1。我尝试将id存储在变量中,然后插入$ var-1,无论我尝试什么,都没有任何效果。好像不管我尝试什么 那两个id值不能相同。 我收到此错误:
Trying to get property 'file' of non-object
因为我要显示简历,但ID不相同。 这是我的代码:
AdminJobSeekerProfileController.php:
public function store(JobSeekerProfileCreateRequest $request)
{
$input = $request->all();
$user = Auth::user();
if($file = $request->file('resume_id')) {
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '-', $name);
$file->storeAs('resumes', $name);
$resume = Resume::create(['file'=>$name]);
$input['resume_id'] = $resume->id;
}
if($file = $request->file('video_one_id')) {
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '-', $name);
$file->storeAs('videos', $name);
$video = Video::create(['file'=>$name]);
$input['video_one_id'] = $video->id;
}
if($file = $request->file('video_two_id')) {
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '-', $name);
$file->storeAs('videos', $name);
$video = Video::create(['file'=>$name]);
$input['video_two_id'] = $video->id;
}
if($file = $request->file('video_three_id')) {
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '-', $name);
$file->storeAs('videos', $name);
$video = Video::create(['file'=>$name]);
$input['video_three_id'] = $video->id;
}
$user->jobSeekerProfile()->create($input);
Alert::success('Your Profile has been created successfully!')->autoclose(5000);
return redirect('/admin/job-seeker/profile');
}
public function update(JobSeekerProfileCreateRequest $request)
{
$user = Auth::user();
$input = $request->only([
'user_id',
'photo_id',
'video_one_id',
'video_two_id',
'video_three_id',
'date_of_birth',
'full_or_part_time',
'experience',
'additional_skills',
]);
if($file = $request->file('resume_id')) {
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '-', $name);
$file->storeAs('resumes', $name);
$resume = Resume::create(['file'=>$name]);
$resumeId = DB::table('resumes')->latest('id')->first();
$user->jobSeekerProfile()->update(['resume_id' => $resumeId->id]);
}
if($file = $request->file('video_one_id')) {
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '-', $name);
$file->storeAs('videos', $name);
$video = Video::create(['file'=>$name]);
$input['video_one_id'] = $video->id;
}
if($file = $request->file('video_two_id')) {
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '-', $name);
$file->storeAs('videos', $name);
$video = Video::create(['file'=>$name]);
$input['video_two_id'] = $video->id;
}
if($file = $request->file('video_three_id')) {
$name = time() . $file->getClientOriginalName();
$name = preg_replace('/\s+/', '-', $name);
$file->storeAs('videos', $name);
$video = Video::create(['file'=>$name]);
$input['video_three_id'] = $video->id;
}
// delete the users first video from the storage/app/public/videos folder and in the videos table
$oldVideo1 = Video::all()->where('id', $user->jobSeekerProfile()->first()->video_one_id);
if($oldVideo1->first() != null) {
Storage::delete('/videos/'.$oldVideo1->first()->file);
$oldVideo1->first()->delete();
}
// delete the users second video from the storage/app/public/videos folder and in the videos table
$oldVideo2 = Video::all()->where('id', $user->jobSeekerProfile()->first()->video_two_id);
if($oldVideo2->first() != null) {
Storage::delete('/videos/'.$oldVideo2->first()->file);
$oldVideo2->first()->delete();
}
// delete the users third video from the storage/app/public/videos folder and in the videos table
$oldVideo3 = Video::all()->where('id', $user->jobSeekerProfile()->first()->video_three_id);
if($oldVideo3->first() != null) {
Storage::delete('/videos/'.$oldVideo3->first()->file);
$oldVideo3->first()->delete();
}
// delete the users resume from the storage/app/public/resumes folder and in the resumes table
$oldResume = Resume::all()->where('id', $user->jobSeekerProfile()->first()->resume_id);
Storage::delete('/resumes/'.$oldResume->first()->file);
$oldResume->first()->delete();
$user->jobSeekerProfile()->update($input);
// Sweet Alert
Alert::success('Your Profile has been updated successfully!')->autoclose(5000);
return redirect('/admin/job-seeker/profile');
}
JobSeekerProfile.php模型:
public function resume(){
return $this->hasOne('App\Resume');
}
Resume.php模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Resume extends Model
{
protected $uploads = '';
protected $fillable = ['file'];
//create an accessor
public function getFileAttribute($resume){
return $this->uploads . $resume;
}
public function jobSeekerProfile(){
return $this->belongsTo('App\JobSeekerProfile');
}
}