猿问

评估关系的存在是对还是错 - Laravel 关系

我正在尝试创建如下策略:


public function view(User $user, PersonalStatement $personalStatement)

{


    return $user->applicant->id == $personalStatement->applicant_id || $user->mentor->exists();


}

然后,我使用存在导师关系但不存在申请人关系的用户模型对其进行测试,并且出现错误:


试图获取非对象的属性“id”


我相信这是因为在这种情况下 user->applicant 返回 null 。


评估模型是否具有响应为真或假的关系的最佳方法是什么?


如果关系不存在,则使用exists() 方法返回null。


蝴蝶刀刀
浏览 146回答 2
2回答

茅侃侃

要处理null大小写,您可以使用optionalLaravel 助手,它允许您调用任何属性/方法,即使您的源为 null,它也返回 null 而不是抛出异常。public function view(User $user, PersonalStatement $personalStatement){    return optional($user->applicant)->id == $personalStatement->applicant_id || $user->mentor->exists();}

吃鸡游戏

要检查“用户”模型的“申请人”关系,请尝试$user->applicant()->exists()或者$user->applicant()->count()注意:关系后面的括号确实很重要。
随时随地看视频慕课网APP
我要回答