Laravel 5:上传的图片未附加到article_id

时间:2015-10-25 06:07:59

标签: php laravel laravel-5

尝试在创建文章时上传图片并将该图片附加到文章中,这样我就可以在我的视图中执行{{ $article->image->path }}之类的操作。到目前为止,一切都设置良好,文章保存到正确的目录,路径被添加到数据库(虽然路径很奇怪,例如名为&#34的文件;月亮壁纸"将被保存as" img / moon-wallpaper.jpg.jpg" - 由于某种原因,它增加了两次扩展名。但无论如何..

我的问题中的问题是保存到images表的图像路径应该附加一个article_id,以便在视图中引用...但是我收到一个错误并且错误显示"尝试获得非对象的财产"因为store方法中的$response->id求值为null = S我做错了什么?我该怎么做才能正确?

任何帮助都会很棒!

文章控制器中的

存储方法:

public function store(ArticleRequest $request)
    {
        $this->createArticle($request);

        $image = $request->file('image');

        $uploads = 'img/';

        $imageName = $image->getClientOriginalName().'.'.$image->getClientOriginalExtension();

        $image->move($uploads, $imageName);

        $response =  $this->createArticle($request);

        Image::create([
            'path' => $uploads.$imageName,
            'article_id' => $response->id
        ]);

        return redirect('blog');
    }

使用私有方法创建文章。 createArticle方法:

private function createArticle(ArticleRequest $request)
    {
        $article = Auth::user()->articles()->create($request->all());

        $this->syncTags($article, $request->input('tag_list'));
    }

1 个答案:

答案 0 :(得分:1)

为什么要创建文章2次?第二次在$ response中存储createArticle()方法返回的值,但此方法不返回任何值。您应该在syncTags()之后返回$ article。

private function createArticle(ArticleRequest $request)
{
    $article = Auth::user()->articles()->create($request->all());

    $this->syncTags($article, $request->input('tag_list'));

    return $article;
}

我是对的吗?