2016-05-10 9 views
3

Я хочу, чтобы количество чатов между пользователями и группой по их идентификатору чата. Но запрос не дает количество чатов. Его пробел. Я видел аналогичные проблемы в Stack Overflow (Laravel Eloquent groupBy() AND count, Laravel get count of results based on groupBy) и использовал те запросы, которые отмечены как правильные, но не получающие желаемого результата.Count with GroupBy не работает в Laravel

Я использую следующий запрос:

$user_info = DB::table('chat_messages') 
       ->select(DB::raw('count(*) as total')) 
       ->where('viewed','=', '0') 
       ->groupBy('chat_id','type') 
       ->get(); 

Моя структура таблицы как:

{ 
"_id": ObjectId("571f549b1c8cb6972c8b4567"), 
"message": "Testing Chat Functionality", 
"type": "singlechat", 
"date": "2016-04-26 11:44:27", 
"from": "56b07a5a083f119a0b8b4569", 
"to": "56b07a5a083f119a0b8b4569", 
"chat_id": "56f65fc51c8cb6ca1a8b4567", 
"status": "1", 
"updated_at": ISODate("2016-04-26T11:44:27.624Z"), 
"created_at": ISODate("2016-04-26T11:44:27.624Z"), 
"viewed": "0" 
} 

И результат приходит так:

Array 
(
[0] => Array 
    (
     [_id] => Array 
      (
       [chat_id] => 56f65fc51c8cb6ca1a8b4567 
       [type] => singlechat 
      ) 

     [chat_id] => 56f65fc51c8cb6ca1a8b4567 
     [type] => singlechat 
     [count(*) as total] => 
    ) 

[1] => Array 
    (
     [_id] => Array 
      (
       [chat_id] => 56fa3f5f1c8cb667138b4567 
       [type] => groupchat 
      ) 

     [chat_id] => 56fa3f5f1c8cb667138b4567 
     [type] => groupchat 
     [count(*) as total] => 
    ) 

)

ответ

0
$user_info = DB::table('chat_messages') 
       ->where('viewed','=', '0') 
       ->select(DB::raw('count(chat_messages.*) as total')) 
       ->groupBy('chat_id','type') 
       ->get(); 

Это должно работать, я не могу проверить прямо сейчас

+0

Нет его не работает. Он дает тот же результат, что и выше, с небольшими изменениями. Я даю [count (chat_messages_ *) как total] => – Mukesh