如何在 laravel 中添加媒体文件?

How can I add media files in laravel?

用户可以register/sign注册为求职者或雇主。如果他是求职者,他可以在创建个人资料页面上创建个人资料。在表单上,​​它们有 4 个文件类型输入,以及其他输入。 请参见下面的屏幕截图。

我有一个名为 job_seeker_profiles 的 Table,里面有好几列,但只有这 4 列与我的问题相关。 resume_id、video_one_id、video_two_id、video_three_id

我还有 2 个 Table,简历和视频,每个都有一个名为 'file' 的栏目。 这是有效的,文件路径正在被插入到数据库中。

在我的 public 文件夹中,我创建了 2 个目录简历和视频。这是我要存储文件的地方。这部分也有效,当我仅上传简历(没有视频,它们是可选的)并单击创建个人资料时,该文件出现在我的 public 文件夹中的 /resumes 文件夹中。

问题是,在 job_seeker_profiles Table 的 resume_id 列中,我将这个值插入我的数据库“/Applications/XAMPP/xamppfiles/temp/phpx6Dmr”,而不是 id来自简历的文件 Table.

我觉得可能是我的人际关系出了问题?

这是我的代码。

AdminJobSeekerProfilecontroller.php 文件:

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 和在基于云的系统上托管文件有任何建议,那也很好。

谢谢 Tpojka。这现在对我有用:

$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');