php - Laravel5 急切加载空值

标签 php laravel laravel-5 eloquent eager-loading

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

关于php - Laravel5 急切加载空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30021967/

相关文章:

php PHPSESSID 存在但 session 被破坏

php - 在 php 中,表格背景颜色的运算符有问题

javascript - 从另一个 <select> 更改并加载 <select> mySQL 值

php - 如果我想要一张图像附有其他图像,我是否需要多个数据库表?

php - 如何在 Laravel 5.1 中使用 NOT FIND_IN_SET?

php - SQL 语句不写入数据库

php - 使用 vue.js 在 laravel 中使用消息重定向

php - 在 Laravel、Vuejs 和 Inertia 中配置 TypeScript 时出现问题

php - Laravel - 自定义数据透视模型中的 belongsTo 关系不起作用

php - Laravel 5 干预图像/干预缓存 : flexible url/routing