gpt4 book ai didi

laravel - Eloquent:如何结合预加载和数据透视过滤?

转载 作者:行者123 更新时间:2023-12-02 17:12:29 24 4
gpt4 key购买 nike

模型之间存在多对多关系。对于给定的模型实例,我知道如何根据数据透视值过滤相关模型。例如,对于用户和角色,我会使用:

User->roles()->wherePivot('admin',1);

同样,我知道如何为一组用户预加载所有角色:

User::where('active',1)->with('roles')->get();

我想做的是结合这两个概念。例如,我如何检索一组用户及其急切加载的角色,其中根据数据透视表上的字段过滤用户?

我意识到我可以使用原始 SQL 轻松完成此操作,但如果可能的话我更愿意使用 Eloquent。

最佳答案

您可以使用闭包来限制急切加载关系。

$users = User::with(['roles' => function ($query) {
return $query->wherePivot('admin', 1);
}])
->where('active', 1)
->get();

您还可以使用 whereHas 查询关系。

$users = User::with('roles')
->whereHas('roles', function ($query) {
return $query->wherePivot('admin', 1);
})
->where('active', 1)
->get();

关于laravel - Eloquent:如何结合预加载和数据透视过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48331985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com