Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为laravel关系对象设置空安全_Php_Laravel_Eloquent - Fatal编程技术网

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版本