【发布时间】:2020-07-07 10:02:17
【问题描述】:
我尝试获取属于项目的 cmets,一个特殊用户已发布但收到此错误:
试图获取非对象的属性“cmets”(查看:/Applications/AMPPS/www/zenit/resources/views/middleware.blade.php)
我在 middleware.blade.php 中创建了一个 foreach 循环,如下所示;
@foreach(Auth::user()->courses->comments as $comment)
在 My Course 模型中,我创建了 hasManyThrough 关系,如下所示
public function comments()
{
return $this->hasManyThrough(Comment::class, Project::class, 'course_id', 'project_id', 'id', 'id');
}
我的 projects 表有一个 course_id 列,我的 cmets 表有一个 project_id 列
有人可以帮助我吗?提前致谢
【问题讨论】:
-
转储
Auth::user()->courses会得到什么? -
当我转储 Auth::user()->课程我得到空
-
嗯,你有它。检查您的 User 课程是如何补充水分的 - 那里没有任何课程。
-
也感觉由于公式:
->courses->comments,课程应该是一个集合,所以不可能得到这样的cmet。 -
请通过编辑问题而不是在 cmets 中添加相关代码。如果这是一个函数,那么你应该这样称呼它:
->courses()。致电->courses正在寻找公共财产。