Laravel - Как суммировать отношения по модели (т.е. не по записи по уровню записи) - PullRequest
0 голосов
/ 04 июня 2019

Оптимизация производительности

Из соображений производительности я не хочу использовать eloquent для создания коллекции. Я бы предпочел, чтобы SQL выполнял тяжелую работу и вычислял общее количество доверенностей, подписанных по всем претензиям, которые соответствуют определенным критериям, чтобы избежать зацикливания PHP на каждой записи претензии (например, через withCount и т. Д.)

Я хочу сделать что-то простое, как это:

Claim::join('powers_of_attorney', 'powers_of_attorney.claim_id', '=', 'claims.id')->selectRaw(['claims.id', 'count(case when powers_of_attorney.status = "closed" and powers_of_attorney.claim_id = claims.id and powers_of_attorney.deleted_at is null then powers_of_attorney.id end) as poasSigned'])->sum('poasSigned');

Должен работать в соответствии с этим: Laravel Query Builder - Используйте метод sum для сгенерированного атрибута

Но я получаю сообщение об ошибке

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'poasSigned' in 'field list' (SQL: select sum(`poasSigned`) as aggregate from `claims` inner join `powers_of_attorney` on `powers_of_attorney`.`claim_id` = `claims`.`id` where `claims`.`deleted_at` is null)

Идеи как решить?

Заявка модель

id
name
...

Доверенности, модель

id
claim_id
status
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...