【问题标题】:Laravel 5: Uploaded image not being attached to article_idLaravel 5:上传的图片未附加到 article_id
【发布时间】:2015-10-25 06:07:59
【问题描述】:

在创建文章时尝试上传图片并将该图片附加到文章中,这样我就可以在我看来像{{ $article->image->path }} 这样的事情。到目前为止,一切都设置好,文章被保存到正确的目录,路径被添加到数据库中(虽然路径很奇怪,例如名为“moon-wallpaper”的文件将保存为“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'));
    }

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

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

    private function createArticle(ArticleRequest $request)
    {
        $article = Auth::user()->articles()->create($request->all());
    
        $this->syncTags($article, $request->input('tag_list'));
    
        return $article;
    }
    

    我说的对吗?

    【讨论】:

    • 我有 $this->createArticle($request);然后返回 redirect('blog');在存储方法中。这样可以节省一篇文章(减去所有其他图像代码)。我猜只是用方法清理它。
    • 如果你把 dd($response);在你创建图像的那一行之前,$response 有什么?
    • $response 有 null =\
    • 是的,我知道。这就是为什么在我的回答中我说你应该在 createArticle() 方法中添加“return $article”。这能解决问题吗?
    • 啊,就是这样!谢谢!忘记将其添加到可批量分配的数组中。
    猜你喜欢
    • 2015-10-19
    • 2019-05-15
    • 2019-06-30
    • 2021-12-10
    • 2015-07-04
    • 2016-10-10
    • 1970-01-01
    • 2023-03-17
    • 2016-01-06
    相关资源
    最近更新 更多