Неопределенная ошибка свойства при попытке использовать отношение в Laravel - PullRequest
2 голосов
/ 09 января 2020

У меня есть следующее отношение между постом и его комментариями:

В модели поста:

public function comments()
    {

        return $this->hasMany('App\Comment', 'post_id'); 
    }

В модели комментария:

public function posts()
    {

        return $this->belongsTo('App\Post', 'id');   // id is the primary key in posts table
    }

сообщения возвращаются без каких-либо проблем в нижеприведенном разделе l oop, но всякий раз, когда я пытаюсь использовать связь для получения комментариев, я вижу следующую ошибку:

Foreach:

@foreach($topans as $topanswer)

           <p> {{$topanswer->body}} </p>

           <br>
   @if(!empty($topanswer->comments))
       @foreach($topans->comments as $topanscom)

            <p>{{$topanscom->comment}} </p>

       @endforeach
   @endif
@endforeach

Ошибка:

Undefined property: Illuminate\Database\Eloquent\Collection::$comments (View: C:\xampp\htdocs\sharp\resources\views\showPost.blade.php)

Я что-то упустил?

1 Ответ

2 голосов
/ 09 января 2020

Похоже, вы пытаетесь получить ответы на всю коллекцию в своем внутреннем foreach l oop. Коллекция верхнего уровня ($topans) является коллекцией topanswers и не имеет поля comments, поскольку она является коллекцией.

Попробуйте получить второй уровень topanswer комментарии в этом внутреннем foreach l oop:

@foreach($topanswer->comments as $topanscom)

Кроме того, как примечание, я думаю, что вы попали в ловушку именования - это может помочь использовать немного немного более описательные или разные имена, это поможет вам избежать неприятностей:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...