我的情况非常混乱。我在Blade模板中的代码是这样的:
@foreach ($upcoming as $match)
<?php
dd($match->team1);
echo $match->team1->flag_image;
?>
// --- snip
(<?php
标签仅用于调试,不属于实际代码)
如果运行此代码,则第一行中的dd
会触发,并且按预期方式获得转储:
但是当我注释掉时,下一行无法找到team1
对象:
<?php
//dd($match->team1);
echo $match->team1->flag_image;
?>
结果是:
Trying to get property 'flag_image' of non-object
据我所知,这些关系定义正确。如果不是,那么第一个dd
就不会起作用。
我真的无话可说,简单的echo
无法加载关系。有人遇到类似的东西吗?
答案 0 :(得分:0)
您的$ match可能没有关系team1。因此,关系数据(即flag_image)不会退出。
您可以检查关系是否存在,然后尝试访问该属性。 如果您这样:
if($match->team1)
{
echo ($match->team1->flag_image);
}
刀片中的OR
{{$match->team1?$match->team1->flag_image:'N/A'}}
答案 1 :(得分:0)
因此,我终于设法找到了它。我在这里发布消息是为了帮助别人,尽管这只是调试的一种情况。
在我的情况下,比赛的集合(称为upcoming
)并没有全部分配适当的球队。例如,对于半决赛和决赛,球队尚未宣布(尽管场地已经宣布),所以在我的情况下,team1_id
和team2_id
为空。
很难发现该错误,因为执行dd
仅会检查第一场比赛,对于该比赛,队ID不为空。只有当处理循环达到了最后一场比赛时,团队才空白,并且关系开始抛出错误。