2016-06-29 5 views
0

Я пытаюсь передать две переменные (сообщение и ответ) в вопросе.blade, когда я нажимаю кнопку «отправить», сохраняя тело, плюсы, минусы в DB. я получаю следующее сообщение об ошибке:Ошибка При попытке получить свойство не-объекта в laravel

Попытки получить свойство не-объект (Вид: D: \ WAMP \ WWW \ XXXXXXXXXX \ Resources \ Views \ Question.blade.php) в 9e68b64a739caa46ec7f5af26c6c40a6cf68ebf3.php линии 9 в 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

Спасибо, что сработало. Но в моем случае у меня много ответов на один вопрос, и мне нужно зациклиться в таблице ответов? –

+0

Затем вы хотите зациклиться на $ post-> answer вместо ... –

ответ

0

Вы отправляете $answer как единый объект, но используя его в лезвии в качестве массива, попробуйте использовать его непосредственно в лезвии без @foreach, или, может быть, вы на самом деле пытаетесь отправить массив ответов, а затем отправить $request->user()->answers или $post->answers

+0

Это правильно сохранили данные в БД. Но в вопросе не возникает ничего, хотя есть ответы, связанные с этим вопросом .... Любые идеи? –

+1

'$ post-> answers()' и '$ request-> user() -> answers()' вернут построитель запросов. Чтобы получить ответы, используйте '$ post-> answers' или' $ request-> user() -> answer' –

+0

Это сработало ... Спасибо! –

0

Вместо передачи «ответа» => $ ответа, вы должны пройти 'answer' => $request->user()->answers()->latest()->first()

Смежные вопросы