尝试在创建文章时上传图片并将该图片附加到文章中,这样我就可以在我的视图中执行{{ $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'));
}
答案 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;
}
我是对的吗?