2016-08-31 5 views
0

Как бы я начал писать этот SQL-запрос в Laravel 4.2 с помощью красноречивого?Построение SQL-запроса в eloquent

SELECT * 
FROM participants 
WHERE user_id IN (1, 2) 
GROUP BY convo_id 
HAVING count(DISTINCT user_id) = 2 
AND count(DISTINCT convo_id) = 1 

Я попытался это уже

Participant::whereIn('user_id', $participantIds) 
        ->groupBy('convo_id') 
        ->havingRaw('count(DISTINCT user_id) = '. sizeof($participantIds)) 
        ->whereRaw('count(DISTINCT convo_id) = 1') 
        ->get(); 

Но я получаю эту ошибку

SQLSTATE[HY000]: General error: 1111 Invalid use of group function (SQL: select * from `participants` where `user_id` in (1, 2, 4) and count(DISTINCT convo_id) = 1 group by `convo_id` having count(DISTINCT user_id) = 3) 

ответ

1

Моя ошибка. whereRaw также должен иметьRaw.

Participant::whereIn('user_id', $participantIds) 
        ->groupBy('convo_id') 
        ->havingRaw('count(DISTINCT user_id) = '. sizeof($participantIds)) 
        ->havingRaw('count(DISTINCT convo_id) = 1') 
        ->get(); 
0

Try GroupBy наконец

Participant::whereIn('user_id', $participantIds)       
        ->havingRaw('count(DISTINCT user_id) = '. sizeof($participantIds)) 
        ->whereRaw('count(DISTINCT convo_id) = 1') 
        ->groupBy('convo_id') 
        ->get(); 
Смежные вопросы