php - 尝试在 Laravel 中使用关系时出现未定义的属性错误

标签 php laravel

我的帖子和评论之间有以下关系:

在 Post 模型中:

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
    }

帖子在下面的 foreach 循环中返回没有任何问题,但每当我尝试使用关系来带来评论时,我都会看到以下错误:

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)

我错过了什么吗?

最佳答案

看起来您正试图在您的内部 foreach 循环中提取整个集合的答案。顶级集合 ($topans) 是 topanswers 的集合,并且没有字段 comments,因为它是一个集合。

尝试在内部 foreach 循环中提取第二级 topanswer 的注释:

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

此外,作为旁注,我认为您已经陷入命名的陷阱 - 使用更具描述性或不同的名称可能会有所帮助,这会帮助您摆脱麻烦:)

关于php - 尝试在 Laravel 中使用关系时出现未定义的属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59655746/

相关文章:

php - 如何在 Laravel 护照中实现多重身份验证

php - Laravel Carbon 从当前日期减去天数

PHP 从远程 URL 读取 JSON 文件

PHP多对象函数调用

php - Laravel 组织辅助函数

javascript - 如何使用php从本地目录读取图像并将其显示到网页中

php - Laravel Eloquent - 一对多关系

php - Symfony 2.8.8 转储功能 php7.1 不工作

php - 如何在所有具有 `in use` 表的数据库中进行搜索

javascript - 拖放列 PHP、JS,那怎么办?