Laravel blade 在没有 dd() 时显示错误,但可以使用它

Laravel blade shows error when there is no dd(), but works with it

我有代码检查数据透视表中是否有用户 ID table,如果有则检查他是否赞成或反对(1 或 -1)
{{ $post->votes->where('id', $user->id)->first()->pivot->vote }}
但出于某种原因,这将不起作用,即使它在我死亡和转储时在控制器中工作,甚至在 dd() 中时在 blade 文件中工作。编辑:错误显示 "Trying to get property 'pivot' of non-object"。我该如何解决这个问题?

您需要先检查是否有任何投票,然后您可以使用 pivot->vote,要在一行中实现,您可以使用 optional 辅助方法

{{ optional($post->votes->where('id', $user->id)->first()->pivot)->vote }}

同时确保您已从您的控制器

加载 $post 上的 votes 关系

您 collection 的某些项目必须为空,这就是您收到错误的原因。首先,你应该检查你是否有满足该条件的投票

if ($post->votes->where('id', $user->id)->first()) {
    // do stuff
}

然后还要检查 pivot 属性,例如

$post = $post->votes->where('id', $user->id)->first();
if ($post && $post->pivot) {
    echo $post->pivot->vote;
}