select
*
from
`foundations`
inner join `foundation_sector` on
`foundation_sector`.`foundation_id` = `foundations`.`id`
inner join `sectors` on
`sectors`.`id` = `foundation_sector`.`sector_id`
GROUP BY
foundations.id
HAVING
SUM(sectors.title = 'x')
AND SUM(sectors.title = 'y')
我尝试的是
$postQuery = Foundation::query()
->join('foundation_sector', 'foundation_sector.foundation_id', '=', 'foundations.id')
->join('sectors', 'sectors.id', '=', 'foundation_sector.sector_id')
->groupBy('foundations.id')
->having('sectors.title', 'sum', $sectors, 'and');
但这不起作用。
最佳答案
我仍然使用原始,但也准备了声明:
$postQuery = Foundation::query()
->join('foundation_sector', 'foundation_sector.foundation_id', '=', 'foundations.id')
->join('sectors', 'sectors.id', '=', 'foundation_sector.sector_id')
->groupBy('foundations.id');
foreach ($sectors as $sector) {
$postQuery = $postQuery->havingRaw('SUM(sectors.title = ?)', [$sector]);
}
关于mysql - 有没有办法在 Eloquent 中使用 SUM 编写这个 HAVING 查询而不需要原始数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58236630/