Есть ли способ написать этот запрос HAVING с помощью SUM в Eloquent без raw? - PullRequest
0 голосов
/ 04 октября 2019
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');

, но это не сработало.

1 Ответ

0 голосов
/ 04 октября 2019

Я все еще использовал сырье, но подготовил также заявление:

  $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]);
        }
...