Оптимизация производительности
Из соображений производительности я не хочу использовать 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
...