2014-11-11 1 views
2

У меня есть код нижеLaravel сырье запрос не возвращает результаты

$id = 1; 
$idz = 3; 
$nums = DB::select(DB::raw('select * from chat_user where user_id in (?, ?) and chat_id in (select chat_id from chat_user group by chat_id having count(*) > 1)'), array($id, $idz)); 
return $nums->count(); 

вот у меня есть таблица с именем «user_chat» и я хочу, чтобы выяснить, если я выбрать один из двух строк по их «user_id» делают они имеют тот же «chat_id». код отлично работает, когда я тестирую его в sql-разделе phpmyadmin и возвращаю результат.

select * from chat_user where user_id in (1, 3) and chat_id in (select chat_id from chat_user group by chat_id having count(*) > 1) 

, но когда я пишу это в стиле Laravel, я получаю эту ошибку:

Call to a member function count() on a non-object 

любая помощь будет действительно здорово!

ответ

0

DB::select возвращает массив, а не объект.

Используйте вместо этого count($nums).

+0

Большое вам спасибо. –

0

при использовании DB::select(), возвращенная вещь - результат. а не объект построителя запросов.

вы можете решить это тремя способами.

  • запустить другой SELECT COUNT(id)....
  • если вы выбираете ВСЕ строки, то подсчет элементов в массиве.
  • изменить его на запрос строителя.