是否有一种方法可以用Eloquent的SUM编写此HAVING查询而没有原始内容?

问题描述 投票:0回答:1
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');

但是那不起作用。

mysql laravel eloquent having
1个回答
0
投票

我仍然使用raw,但是还准备了声明:

  $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]);
        }
© www.soinside.com 2019 - 2024. All rights reserved.