Нечто странное происходит. Я думаю, что в какой-то момент это работало, но сейчас по какой-то причине это не так. Я пытаюсь загрузить резюме (Word do c) и видеофайлы и одновременно сохранить их в своей базе данных. Мой метод магазина работает, но мой метод обновления ведет себя странно. Файл резюме помещается в хранилище / app / public / resumes, но если пользователь уже имеет резюме в своем профиле и хочет обновить свой профиль новым резюме, оно не обновляется должным образом.
Способ У меня есть это настроено, 2 таблицы job_seeker_profiles со столбцом resume_id и возобновляет таблицу со столбцом файла, который хранит путь к файлу, и я создал связь между двумя таблицами. Также обратите внимание, что я установил, где, если они загрузят новое резюме, старое резюме будет удалено.
Это то, что происходит. После того, как я нажимаю кнопку «Обновить», если столбец идентификатора равен 10 в таблице резюме, он вставляет 11 в столбец resume_id в таблице job_seeker_profiles. Это всегда разница 1, независимо от того, что я делаю. Я попытался сохранить идентификатор в переменной и вставить $ var-1, и ничего не работает, что бы я ни пытался. Кажется, что независимо от того, что я пытаюсь, эти 2 значения не могут быть одинаковыми. Я получаю эту ошибку:
Trying to get property 'file' of non-object
, потому что я пытаюсь отобразить резюме, но идентификаторы не совпадают. Вот мой код:
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');
}
}