2017-01-26 8 views
1

Этот код возвращает «count» и «odds» значения точно такие же (они не должны быть одинаковыми). На самом деле это считается только «o.id» и возвращает то же значение для обоих.Laravel leftJoin и count issue

Как правильно считать "b.id"?

\DB::table('matches as m') 
    ->selectRaw('  m.id as match_id, 
        m.date_hour as date, 
        m.tournament_id as tournament_id, 
        h.name as host_name, 
        g.name as guest_name, 
        COUNT(o.id) as odds, 
        COUNT(b.id) as count 
        ') 
    ->whereRaw('DATE(m.date_hour) = DATE(NOW())') //OK 
    ->leftJoin('teams as h','h.id','=','m.host_id') 
    ->leftJoin('teams as g','g.id','=','m.guest_id') 
    ->leftJoin('odds as o','o.match_id','=','m.id') 
    ->leftJoin('bets as b','b.match_id','=','m.id') 
    ->groupBy('m.id') 
    ->having('odds','>','0') 
    ->get(); 
+0

Пожалуйста, разместите структуру используемых таблиц базы данных и несколько примеров того, что вы хотите точно. – Jerodev

+0

@Jerodev У меня есть таблицы: ** совпадает **, ** коэффициенты ** с match_id и ** ставки ** с match_id. Я хотел бы получить спички, перечисленные с нечетным и количеством ставок. – Rasko

ответ

0

Заменить:

COUNT(o.id) as odds, 
COUNT(b.id) as count 

с:

COUNT(DISTINCT(o.id)) as odds, 
COUNT(DISTINCT(b.id)) as count 

Он должен работать.

+0

Да, это сработало для меня. Благодаря! – Rasko