我有以下代码
$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"。当我在phpmyadmin的sql部分测试它并返回结果时,代码工作正常。
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 :(得分:0)
DB::select
返回一个数组,而不是一个对象。
改为使用count($nums)
。
答案 1 :(得分:0)
当您使用DB::select()
时,返回的内容就是结果。不是查询构建器对象。
你可以通过三种方式解决这个问题。
SELECT COUNT(id)....