【问题标题】:Laravel: detect if nested relations are loadedLaravel:检测是否加载了嵌套关系
【发布时间】:2016-01-05 14:21:59
【问题描述】:

在 Laravel 中我们可以加载具有嵌套关系的模型

User::with('posts.comments.likes')

但是在其他地方我们如何检测嵌套关系是否被加载?有方法吗?

Model::relationLoaded() 仅检测直接关系。

public function relationLoaded($key)
{
    return array_key_exists($key, $this->relations);
}

【问题讨论】:

    标签: php laravel laravel-5 eloquent laravel-5.1


    【解决方案1】:

    不可能获得嵌套关系的状态 - 至少除了遍历相关对象并单独检查每个对象的关系之外没有其他方法。

    没有实现它的充分理由可能是这样一个事实,如果关系是 X 对多的,比如在您的情况下,用户可以有多个帖子,则可以只为其中的一些帖子急切加载 cmets集合。

    【讨论】:

    • 实际上,没有必要手动检查关系加载状态,因为当您将关系作为属性访问时,Model::getRelationValue() 中已经存在此检查:$user->posts
    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 2014-12-28
    • 2018-06-03
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2017-09-30
    相关资源
    最近更新 更多