Laravel5渴望加载空值

时间:2015-05-04 02:58:03

标签: php laravel laravel-5 eloquent eager-loading

如果字段的值为null,则预先加载将无法正常工作。我如何逃避错误

Trying to get property of non-object

在模型中我设置了这样的关系

public function bilstate()
{
    return $this->hasOne('App\Attribute', 'at_id', 'cu_bilstateid');
}

有人可以分享经验吗?感谢

1 个答案:

答案 0 :(得分:2)

对于hasOne关系,如果相关记录存在,则关系属性将设置为相关模型的实例;如果相关记录不存在,则relationship属性将设置为null。

热切加载工作正常,您只需要在尝试访问相关模型之前检查相关模型是否存在。

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方法进行检查。但是,使用issetempty是不可靠的。如果关系未加载,则使用__get()魔术方法延迟加载属性。 is_null会触发此延迟加载,而issetempty则不会。