Laravel:检测是否加载了嵌套关系

Mik*_*lev 7 php laravel eloquent laravel-5 laravel-5.1

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

User::with('posts.comments.likes')
Run Code Online (Sandbox Code Playgroud)

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

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

public function relationLoaded($key)
{
    return array_key_exists($key, $this->relations);
}
Run Code Online (Sandbox Code Playgroud)

jed*_*ylo 2

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

它没有实现的一个很好的原因可能是这样的事实:如果关系是X对多,就像在您的情况下用户可以有多个帖子一样,则可以只为集合中的某些帖子急切加载评论。