当没有dd()时,Laravel刀片会显示错误,但可以使用它

时间:2018-02-21 17:57:29

标签: php laravel collections blade

我有代码来检查数据透视表中是否有用户ID,以及检查他是否支持或投票(1或-1)
{{ $post->votes->where('id', $user->id)->first()->pivot->vote }}
但由于某些原因,这种情况不起作用,即使它在我死亡和转储时在控制器中工作,或者甚至在dd()中的刀片文件中也能工作。编辑:错误显示“试图获取非对象的属性'枢轴'”。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

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;
}

答案 1 :(得分:0)

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

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

还要确保您已从控制器<{1}}加载votes关系