2013-09-26 3 views
1

У меня есть SQL-запрос, который я хочу использовать в моем приложении Laravel. Запрос SQL, как:SQL to Eloquent ORM

SELECT status, count(status) AS num 
FROM event_businesses 
WHERE event_id = ? 
GROUP BY status 
ORDER BY status ASC 

и то, что я до сих пор

$event_businesses = EventBusiness::select('status') 
        ->where('event_id', '=', $event_id) 
        ->groupBy('status') 
        ->orderBy('status', 'asc')->get(); 

Я действительно не понимаю, где я могу добавить count(status) as num агрегат к моему ОРМ запроса.

Заранее благодарен!

ответ

1

Вам может понадобиться сделать это:

$event_businesses = EventBusiness::select(DB::raw('status as status, count(status) as count')) 
        ->where('event_id', '=', $event_id) 
        ->groupBy('status') 
        ->orderBy('status', 'asc')->get(); 
+0

Привет Antonia, это работает. Но есть ли какой-либо путь, избегая DB :: raw? –

+1

Насколько я знаю, Laravel по-прежнему не поддерживает агрегированные функции в столбцах результатов. Но вы можете использовать агрегат для всего набора результатов: '$ users = DB :: table ('users') -> count();' –

+0

Можете ли вы сказать мне, почему DB :: raw не подходит? –

Смежные вопросы