我以前从未遇到过这种情况,在Laravel 8中,每次我迭代一个集合时,它在之后都会变为null。
示例:
$loops = Loops::get();
在我的循环中
public function loopNotifications()
{
return $this->hasMany(LoopNotifications::class, 'loop_id', 'id');
}
@if($loop->loopNotifications->count())
@foreach($loop->loopNotifications as $loopNotification)
<li class="px-6 py-2 border-b border-gray-200 w-full">
<div class="text-lg font-medium">{!!$loopNotification->convertToReadable()!!}
</div>
</li>
@endforeach
@endif
在我运行这个函数之前,我对循环执行dd()操作,结果都在那里
在我运行了同样的dd()之后,它是null,这发生在我运行的每一个foreach上,我开始写for语句就是为了克服这个问题,但是在这一点上,写所有额外的代码是令人沮丧的。
有人遇到过这个问题吗。
1条答案
按热度按时间68de4m5k1#
不要在blade中使用
$loop
作为变量。Laravel使用这个变量名来给予你了解循环本身,正如你所猜测的那样。重命名变量,然后重试。同样,在sidenote上,你可以使用
??
操作符,而不是将整个代码放在@if块中:(考虑到您将$loop
命名为$l
)如果$loop-〉loopNotifications为空,则返回空数组。这不是必需的,你的也可以,但恕我直言,它更干净。