gpt4 book ai didi

php - Eloquent 多个 whereHas ('pivot_table_X' ) AND whereHas ('pivot_table_X' )

转载 作者:可可西里 更新时间:2023-11-01 09:01:30 32 4
gpt4 key购买 nike

我正在使用 Eloquent 构建应用程序并遇到了麻烦,我正在使用多对多 Pivot 关系。 引用:https://laravel.com/docs/5.0/eloquent#many-to-many

用户模型

  • 编号
  • 用户名

榜样

  • 编号
  • 角色名称

用户角色模型(数据透视表)

  • 编号
  • 用户编号
  • 角色编号

如果我想获得角色 ID 1 的所有用户,我将简单地:

$users = $app->users->with('roles')->has('roles')
->whereHas('roles' function($query) {
$query->where('role_id', 1);
})
->get();

有了这个,我就可以成功获取所有 Role id = 1 的用户。

[问题] 现在,当我需要让所有具有Role id = 1 AND Role id = 2 的用户(在我的例子中包括管理员和版主)

我试过运行这个:

$users = $app->users->with('roles')->has('roles')
->whereHas('roles' function($query) {
$query->where('role_id', 1);
})
->whereHas('roles' function($query) {
$query->where('role_id', 2);
})
->get();

但是耗尽了我的 PHP 执行时间,有没有正确的方法来处理这个问题?我真的很希望有一种有效的方法来做到这一点。

谢谢

最佳答案

你可以这样尝试:

$users = $app->users->with('roles')
->whereHas('roles' function($query) {
$query->where('role_id', 1)
->where('role_id', 2);
})
->get();

我有意删除了 ->has('roles') 因为我们在角色表上使用了 whereHas() 所以 has 会没有用。它的工作原理是一样的。

关于php - Eloquent 多个 whereHas ('pivot_table_X' ) AND whereHas ('pivot_table_X' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40377643/

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