i have the code below
$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();
here i have a table named "user_chat" and i want to find out if i select two rows by their "user_id" do they have the same "chat_id". the code works fine when i test it in phpmyadmin's sql section and return the result.
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)
but when i write it in laravel's style i get this error:
Call to a member function count() on a non-object
any help would be really great!
DB::select
returns an array, not an object.
Use count($nums)
instead.
when you use DB::select()
, the returned thing is the result. not the query builder object.
you can tackle this in three ways.
SELECT COUNT(id)....
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.