2016-06-29 23 views
0

次の入力データをDBに格納しようとしていますが、1つのことを除いて正常に格納されています。データを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

一度に2つの関係を保存しようとしています。 AFAIK、それは動作しません。

投稿をユーザーに保存してから、回答を投稿に保存する必要があります。

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

UPDATE

OPはanswersテーブル内に保存user_idを必要とするので、我々としてもその関係を保存する必要があります。上記の2行のコードでは、$answerは、ユーザー、ちょうど親$postについて何も知らない - 私たちは、明示的にそれがに属すること$answerを伝える必要がありuser

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

私はあなたのソリューションを試しましたが、再びpost_idだけがDBに保存されています。 –

+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', 
    ... 
]; 

または必要なフィールド、幸運。

関連する問題