无法获得正确的多态关系雄辩性关联

时间:2019-03-19 10:04:27

标签: laravel eloquent polymorphic-associations

我有一些应用了隐私设置的资源。即社区和事件。我在需要隐私的所有资源上创建了一个morphOne关系

public function privacy(){
    return $this->morphOne('App\Privacy', 'privacy_resource');
}

我可以像这样查询集合的隐私设置

$profile->events()->with('privacy')->get();

但是当我像这样在单个资源上尝试尝试

$event->with('privacy')->get();

我反而从该资源中获得了所有物品的集合。

我意识到我可能在这里误用了get(),实际上它获取了所有具有隐私设置的事件。除了get之外,还有其他我应该在这里使用的东西吗?谢谢。

1 个答案:

答案 0 :(得分:2)

检索模型后,可以使用load代替with

$event->load('privacy');

这称为Lazy Eager Loading

另一方面,在语句$profile->events()->with('privacy')->get();中,您尚未从数据库中检索事件模型。这就是为什么您可以在此处使用with方法的原因,该方法会将联接添加到查询中。