2016-06-29 92 views
0

我試圖將以下傳入數據存儲到數據庫中,並且除了一件事情之外,它已成功存儲。將數據存儲在laravel中

當我輸入:$request->user()->posts()->save($answer);,除post_id之外,一切都保存良好。 如果我將它替換爲:$post->answers()->save($answer);,除user_id之外的所有內容都可以很好地保存。 如何編輯save()方法以同時保存?從控制器

代碼:

public function postAnswer(Request $request, $post_id) 
    { 


     $post = Post::where('id', $post_id)->first(); 
     $body = $request['body']; 
     $pros = $request['pros']; 
     $cons = $request['cons']; 

     $answer = new Answer(); 
     $answer->body = $body; 
     $answer->pros = $pros; 
     $answer->cons = $cons; 


$post->answers()->save($answer); 

回答

1

你試圖在同一時間挽救兩個關係。 AFAIK,這是行不通的。

您需要先保存帖子給用戶,然後保存帖子的答案。

$request->user()->posts()->save($post); 
$post->answers()->save($answer); 

UPDATE

OP需要保存在answers表內的user_id,所以我們需要保存的關係也是如此。隨着上述兩行代碼,$answer不知道的用戶,只需父$post任何東西 - 所以我們必須明確地告訴$answer,它屬於user

$request->user()->answers()->save($answer); 
+0

我試過你的解決方案,但只有post_id存儲在數據庫中。 –

+0

哪裏需要保存'user_id'? '$ answer'是否需要'user_id'?如果是這樣,那麼你還需要保存該關係:'$ request-> user() - > answers() - > save($ answer);' – swatkins

+1

這工作......謝謝。但我想提一提的是,兩者都可以運行,如下所示:$ request-> user() - > answers() - > save($ answer); $ post-> answers() - > save($ answer); –

0

您可能需要添加這對你的模型:

post.php中:

protected $fillable = [ 
    ... 
    'post_id', 
    ... 
]; 

還是必要的字段,好運氣。