我有這個父表
| ID |
|---|
| 1 |
| 2 |
還有這張兒童桌
| ID | parent_id | 地位 |
|---|---|---|
| 1 | 1 | 3 |
| 2 | 1 | 2 |
| 2 | 2 | 3 |
| 2 | 2 | 3 |
我想查詢表(使用 laravel elloquent)并獲取所有孩子都匹配狀態 3 的父母。例如,父表中的 id = 2 匹配此條件
uj5u.com熱心網友回復:
我無法對其進行測驗,但這可能有效:
Parent::whereDoesntHave('children', function($query) {
$query->where('status', '!=', 3);
})->whereHas('children')
生成的 SQL 如下所示:
select
*
from
`parents`
where
not exists (
select
*
from
`children`
where
`parents`.`id` = `children`.`parent_id`
and `status` != 3
)
and exists (
select
*
from
`children`
where
`parents`.`id` = `children`.`parent_id`
)
它只選擇有孩子的父母,并排除有孩子身份不等于 3 的父母
uj5u.com熱心網友回復:
聚合是一種選擇:
SELECT p.id
FROM parent p
INNER JOIN children c
ON c.parent_id = p.id
GROUP BY p.id
HAVING MIN(c.status) = MAX(c.status) AND MIN(c.status) = 3;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/491397.html
