2016-06-29 103 views
0

私はbody.productをcons中に保存している間に "submit"ボタンをクリックするとquestion.bladeビューに2つの変数(投稿と回答)を渡そうとしています。 DB。 (Question.blade.php \ \ WAMP \ WWW XXXXXXXXXX \リソース\ \ビュー:Dビュー)9e68b64a739caa46ec7f5af26c6c40a6cf68ebf3.phpラインでで非オブジェクトのプロパティを取得しようとするとエラーlaravelで非オブジェクトのプロパティを取得しようとしています

: は、私は次のエラーを受け取りますCompilerEngine-> handleViewException(オブジェクト(ErrorException)、 '1')PhpEngine.phpライン44

コントローラコード:

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; 


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

     return view('Question', [ 
      'post' => $post , 
     'answer' => $answer]); 

question.bladeコード:

@foreach ($answer as $answers) 

       <p>{{ $answers->body }}</p> 
       <p>{{ $answers->pros }}</p> 
        <p>{{ $answers->cons }}</p> 

@endforeach 
+0

を渡す必要があります。 foreachを削除し、$ answerを使用して属性を取得します。 –

+0

ありがとうございました。しかし、私の場合、1つの質問に対して多くの回答があり、回答表をループする必要がありますか? –

+0

次に、$ post-> answersをループしたいと思います... –

答えて

0

あなたは$answerを1つのオブジェクトとして送信しますが、それをブレードで配列として使用する場合は、@foreachを使わずにブレードで直接使用するか、実際には配列を送信してから送信してください代わりに '答え' => $の答えを渡すの$request->user()->answersまたは$post->answers

+0

これにより、データがDBに正しく保存されました。しかし、この質問に関連する回答はありますが、質問には何も表示されません。 –

+1

'$ post-> answers()'と '$ request-> user() - > answers()'はクエリビルダを返します。答えを得るには '$ post-> answers'または' $ request-> user() - > answers'を使います –

+0

これはうまくいきました...ありがとう!! –

0

は、あなたはforeachの上で$答えを使用することはできません'answer' => $request->user()->answers()->latest()->first()

関連する問題