Я, наконец, изменил свой подход: вместо того, чтобы писать запрос для всего процесса, я разделил его на разные части, каждая из которых работает с Eloquent.Чтобы быть точным, я выбрал Code, sum (bedeh) и sum (bestan) следующим кодом:
$codes = Sanad::selectRaw('Code, sum(bedeh) bed, sum(bestan) bes')
->groupBy('Code')
->get();
Затем я выбрал строки с более высокой суммой bedeh по laravel вместо SQL следующим образом:
$debtors = array();
foreach ($codes as $c) {
if($c->bes < $c->bed) {
$debtors[] = $c->Code;
}
}
Теперь мы можем использовать другой выбор для получения экземпляров Eloquent, таких как:
Person::select(....)->whereIn('Code', $debtors)....->get();
В этом сценарии производительность может снизиться;однако я могу извлечь выгоду из средств Eloquent, таких как нумерация страниц.
Хабиб