【问题标题】:Can't get correct Eloquent association on polymorphic relationship无法在多态关系上获得正确的 Eloquent 关联
【发布时间】:2019-03-19 10:04:27
【问题描述】:

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

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

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

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

但是当我在这样的单个资源上尝试这样做时

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

我改为从该资源中获取所有项目的集合。

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

【问题讨论】:

    标签: laravel eloquent polymorphic-associations


    【解决方案1】:

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

    $event->load('privacy');
    

    这叫Lazy Eager Loading

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

    【讨论】:

    • 用户还可以通过$event->privacy()->get(); 查询附加到该特定事件的隐私对象而不影响$event
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2022-01-15
    • 2021-11-17
    • 2019-05-22
    • 2015-06-22
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多