необработанный запрос 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

любая помощь будет очень полезной!

2

Решение

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

использование count($nums) вместо.

0

Другие решения

когда вы используете DB::select()Возвращенная вещь — результат. не объект построителя запросов.

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

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

По вопросам рекламы [email protected]