Php 为laravel关系对象设置空安全
我有一个Php 为laravel关系对象设置空安全,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个用户和一个配置文件模型,每个用户都有一个配置文件。 在某些页面上,我想检查用户字段的配置文件,如下所示: $user->profile->membership_id trying to get membership_id of none object 现在,当->profile不存在时,我的应用程序崩溃。我可以使用null合并成员身份\u id,但我想知道是否可以为->profile设置null安全,因此如果profile不存在,应用程序不会出现如下错误: $user-&
用户
和一个配置文件
模型,每个用户都有一个
配置文件。
在某些页面上,我想检查用户字段的配置文件,如下所示:
$user->profile->membership_id
trying to get membership_id of none object
现在,当->profile
不存在时,我的应用程序崩溃。我可以使用null合并成员身份\u id
,但我想知道是否可以为->profile
设置null安全,因此如果profile不存在,应用程序不会出现如下错误:
$user->profile->membership_id
trying to get membership_id of none object
可以将默认对象添加到关系中,例如:
public function profile()
{
return $this->belongsTo(Profile::class)->withDefault();
}
或
调用
$user->profile
之前,请检查$user->profile
是否存在,然后再调用->membership\u id
从PHP8开始就可用:$user->profile?->membership\u id
:在PHP7中使用它有什么方法吗?为什么不使用属性\u-exists()?编辑:NVM Marcin Nabiałek得到了它。@Farshad不,它是PHP8中添加的一个新操作符,所以不能在PHP7中使用它。还有其他方法(如您所述的null coalesce
,以及下面的答案),但是null safe
将要求您更新您的PHP版本