如果字段具有 null
值,则预加载将不起作用。如何避免错误
尝试获取非对象的属性
在模型中我设置了这样的关系
public function bilstate()
{
return $this->hasOne('App\Attribute', 'at_id', 'cu_bilstateid');
}
有人可以分享一下经验吗?谢谢
最佳答案
对于hasOne
关系,如果相关记录存在,则关系属性将被设置为相关模型的实例;如果相关记录不存在,则关系属性将设置为空。
急切加载工作正常,您只需要在尝试访问相关模型之前检查相关模型是否存在即可。
if ($model->bilstate) {
echo 'bilstate exists: '.$model->bilstate->at_id;
} else {
echo 'bilstate does not exist. Don't access attributes or you'll get an exception.';
}
注意:如果您愿意,可以使用 is_null
方法进行检查。但是,使用 isset
或 empty
是不可靠的。如果关系不是预先加载的,那么该属性将使用 __get()
魔术方法进行延迟加载。 is_null
将触发此延迟加载,而 isset
和 empty
则不会。
关于php - Laravel5 急切加载空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30021967/