【发布时间】:2023-03-30 01:40:01
【问题描述】:
我有以下型号:
- 客户端
- belongsToMany(组)
- 组
- belongsToMany(客户端)
我想要的是所有组的数组,其中每个组都包含属于它的客户端。
我可以通过以下代码实现这一点:
Group::with('clients')->get();
现在我只想获取客户端状态属性为 0 的组和客户端。因此,如果组中有多个客户端,则结果不应包含状态为 !=1 的客户端。此外,如果此条件为组返回 0 个客户端,则该组也不应包含在最终结果中。
到目前为止我尝试了什么:
Group::with(['clients' => function($query) {
$query->where('clients.status', '!=', 1);
}])->whereHas('clients', function($query) {
$query->where('clients.status', '!=', 1);
})->get();
不知何故,当我执行查询时,这两个 where 条件都不适用。我错过了什么或做错了什么?
【问题讨论】:
-
您说您“只想获取客户端状态属性为 1 的组”,但您的查询有
clients.status != 1。我错过了什么吗? -
@tptcat 打错了,我改正了
-
链接用户和组的数据透视表是什么样的?只是
user_id和group_id吗? -
没错。数据透视表中不涉及其他属性。 (除了创建等)
标签: laravel laravel-5 eloquent