如何将图像上传到具有多对多关系的表单?

时间:2015-10-28 04:07:22

标签: php mysql laravel-5

这与this question非常相似。我正在使用Laravel 5并尝试使用表单将文件(图像)添加到我的数据库中。我有一个表单,可以在我的文章类中添加各种数据(标题,描述,图像)。一篇文章还有'belongsToMany'类别和天数(很多到很多r / ship)。下面的代码允许我上传我的数据,但是它添加了文章的三个实例!前两个实例具有正确的照片路径/名称(photo.jpg)。第三个实例将这样的名称添加到db:/ tmp / phphJIIY1。它正确地为数据透视表添加了ids。

我认为这是“商店”功能的这一行

        $article = Article::create($request->all());    

导致问题,但我需要该行,否则我会收到my last question中描述的错误。

如何订购/更改此代码,以便我可以上传图片为我的文章添加类别/天?我已经安装了干预\图像但尚未使用它。

   public function create()
{

    $categories = Category::lists('name', 'id');
    $days = Day::lists('dayname', 'id');
    return view('articles.create', compact('categories', 'days'));
}

public function store(ArticleRequest $request)
{

   $image_name = $request->file('image')->getClientOriginalName();
   $request->file('image')->move(base_path().'/public/images', $image_name);
   $article = ($request->except(['image']));
   $article['image'] = $image_name;
   Article::create($article);

//上面这条线路本身很好用(如果我在这里评论它可以正常工作但是我需要我的很多很多人去工作)

    $article = Article::create($request->all());

//必须添加以上行才能使'categories()'工作。

    $categoriesId = $request->input('categoryList');
    $article->categories()->attach($categoriesId);
    $daysId = $request->input('dayList');
    $article->days()->attach($daysId);
    return redirect()->route('articles_path');

}

1 个答案:

答案 0 :(得分:2)

抱歉,我误解了。我是新人&试图解决问题。 我有同样的问题,保存了2个候选记录,我这样做是为了让它起作用:

    $file = Request::file('resume');
    $extension = $file->getClientOriginalExtension();
    Storage::disk('local')->put($file->getFilename().'.'.$extension,  File::get($file));
    $resume = new Resume();
    $resume->mime = $file->getClientMimeType();
    $resume->filename = $file->getFilename().'.'.$extension;
    //save resume & put candidate's id as foreign key
    $candidate=new Candidate();
    $data=array_except($data, array('_token','resume'));
    //attach blank candidate to current user
    $user->candidate()->save($candidate);
    $candidate->resume()->save($resume);

    //find the right instance of candidate we want to update*
    $candidate=$user->candidate($user);
    //Now update the candidate with data once it's been attached.
    $candidate->update($data);