laravel raw query不返回结果

时间:2014-11-11 19:31:42

标签: php mysql laravel laravel-4 query-builder

我有以下代码

$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

任何帮助都会非常棒!

2 个答案:

答案 0 :(得分:0)

DB::select返回一个数组,而不是一个对象。

改为使用count($nums)

答案 1 :(得分:0)

当您使用DB::select()时,返回的内容就是结果。不是查询构建器对象。

你可以通过三种方式解决这个问题。

  • 运行另一个SELECT COUNT(id)....
  • 如果您选择所有行,则计算数组中的项目。
  • 将其更改为查询构建器。