2015-10-25 60 views
0

試圖在創建文章時上傳圖像並將該圖像附加到文章中,因此我可以在我的視圖中執行類似{{ $article->image->path }}的操作。到目前爲止,一切都設置良好,文章被保存到正確的目錄,路徑被添加到數據庫(儘管路徑很奇怪,例如名爲「moon-wallpaper」的文件將被保存爲「img/moon -wallpaper.jpg.jpg「 - 由於某種原因它增加了兩次擴展名)。但無論如何..Laravel 5:上傳的圖像沒有附加到article_id

問題在我的問題是,保存到圖像表的圖像路徑應該有一個article_id附加到它被視爲引用...但我得到一個錯誤,錯誤說「試圖獲取非對象的屬性」,因爲商店方法中的$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

爲什麼你創建文章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; 
} 

對嗎?

+0

我有$ this-> createArticle($ request);然後返回重定向('blog');在商店的方法。這節省了一篇文章(減去所有其他圖像代碼)。我想,只是使用該方法來清理它。 – Lansana

+0

如果你把dd($ response);在創建圖像的行之前,$ response有什麼功能? –

+0

$ response has null = \ – Lansana