Нет смысла использовать Eloquent для этого.
Customers::selectRaw('count(*)')->fromSub(function ($subquery) {
$subquery->selectRaw('count(*)')
->from('table')
->groupBy(['field1','field2']);
}, 'total')
->get();
Запуск этого в консоли дает следующий результат:
--> use App\User;
User::selectRaw('count(*)')->fromSub(function ($subquery) {
$subquery->selectRaw('count(*)')
->from('table')
->groupBy(['field1','field2']);
}, 'total')
->toSql();
=> "select count(*) from (select count(*) from `table` group by `field1`, `field
2`) as `total`"
Вы заметите, что я использовал свой собственный модель. Это то, что я имел в виду, когда не было смысла использовать eloquent. С того момента, как вы вызываете from()
или любой из его вариантов (в нашем случае fromSub
), вы переходите к построителю запросов. И в этом случае вы даже не называете таблицу модели.