我正在尝试创建如下策略:public function view(User $user, PersonalStatement $personalStatement){ return $user->applicant->id == $personalStatement->applicant_id || $user->mentor->exists();}然后,我使用存在导师关系但不存在申请人关系的用户模型对其进行测试,并且出现错误:试图获取非对象的属性“id”我相信这是因为在这种情况下 user->applicant 返回 null 。评估模型是否具有响应为真或假的关系的最佳方法是什么?如果关系不存在,则使用exists() 方法返回null。
2 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
要处理null大小写,您可以使用optionalLaravel 助手,它允许您调用任何属性/方法,即使您的源为 null,它也返回 null 而不是抛出异常。
public function view(User $user, PersonalStatement $personalStatement)
{
return optional($user->applicant)->id == $personalStatement->applicant_id || $user->mentor->exists();
}
吃鸡游戏
TA贡献1829条经验 获得超7个赞
要检查“用户”模型的“申请人”关系,请尝试
$user->applicant()->exists()
或者
$user->applicant()->count()
注意:关系后面的括号确实很重要。
- 2 回答
- 0 关注
- 145 浏览
添加回答
举报
0/150
提交
取消