Как я могу добавить медиа файлы в laravel? - PullRequest
0 голосов
/ 02 марта 2020

Пользователь может зарегистрироваться или зарегистрироваться в качестве соискателя или работодателя. Если он ищет работу, он может создать профиль на странице создания профиля. На форме их 4 входа с типом файла, среди других входов. Смотрите скриншот ниже. enter image description here

У меня есть таблица с именем job_seeker_profiles, там есть несколько столбцов, но только эти 4 имеют отношение к моей проблеме. resume_id, video_one_id, video_two_id, video_three_id

У меня также есть 2 таблицы, резюме и видео, каждый из которых имеет один столбец с именем «файл». Это работает, пути к файлам вставляются в базу данных.

В моей папке publi c я создал 2 каталога резюме и видео. Здесь я хочу хранить файлы. Эта часть также работает, когда я загружаю только резюме (нет видео, они необязательны) и нажимаю кнопку «Создать профиль». Файл появляется в папке / resumes в моей папке publi c.

Проблема заключается в том, что в столбце resume_id в таблице job_seeker_profiles я вставляю это значение в мою базу данных "/ Applications / XAMPP / xamppfiles / temp / phpx6Dmr" вместо идентификатора файла из таблицы резюме.

Я думаю, может быть, это проблема моих отношений?

Вот мой код.

AdminJobSeekerProfilecontroller. php file:

public function store(JobSeekerCreateRequest $request)
    {
        if($file = $request->file('resume_id')) {

            $name = time() . $file->getClientOriginalName();

            $file->move('resumes', $name);

            $resume = Resume::create(['file'=>$name]);

            $input['resume_id'] = $resume->id;

        }

        $input = $request->all();

        if($file = $request->file('video_one_id')) {

            $name = time() . $file->getClientOriginalName();

            $file->move('videos', $name);

            $video = Video::create(['file'=>$name]);

            $input2['video_one_id'] = $video->id;

        }

        $input2 = $request->all();

        if($file = $request->file('video_two_id')) {

            $name = time() . $file->getClientOriginalName();

            $file->move('videos', $name);

            $video = Video::create(['file'=>$name]);

            $input3['video_two_id'] = $video->id;

        }

        $input3 = $request->all();

        if($file = $request->file('video_three_id')) {

            $name = time() . $file->getClientOriginalName();

            $file->move('videos', $name);

            $video = Video::create(['file'=>$name]);

            $input4['video_three_id'] = $video->id;

        }

        $input4 = $request->all();

        JobSeekerProfile::create($input, $input2, $input3, $input4);

        return redirect('/admin/job-seeker/profile/create');
    }

Resume. php Модель:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Resume extends Model
{

    protected $uploads = '/resumes/';

    protected $fillable = ['file'];

    //create an accessor
    public function getFileAttribute($resumes){

        return $this->uploads . $resumes;

    }

}

JobSeekerProfile. php Модель:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class JobSeekerProfile extends Model
{

    protected $dates = ['date_of_birth'];

    protected $fillable = [

        'user_id',
        'photo_id',
        'resume_id',
        'video_one_id',
        'video_two_id',
        'video_three_id',
        'first_name',
        'last_name',
        'email',
        'full_or_part_time',
        'additional_skills',
        'file'

    ];

    public function user(){

        return $this->belongsTo('App\User');

    }

    public function resume(){

        return $this->belongsTo('App\Resume');

    }

    public function video(){

        return $this->belongsTo('App\Video');

    }

}

Кстати, я знаю, что я должен хранить видеофайлы на чем-то вроде amazon s3, но я хочу, чтобы это работало так: путь на данный момент. И если у вас есть какие-либо рекомендации для Laravel и размещения файлов в облачной системе, это было бы замечательно.

1 Ответ

0 голосов
/ 02 марта 2020

Спасибо, Тпойка. Теперь это работает для меня:

$input = $request->all();

        $user = Auth::user();

        if($file = $request->file('resume_id')) {

            $name = time() . $file->getClientOriginalName();

            $file->move('resumes', $name);

            $resume = Resume::create(['file'=>$name]);

            $input['resume_id'] = $resume->id;

        }

        $user->jobseekerprofile()->create($input);

        return redirect('/admin/job-seeker/profile/create');
...