计算Laravel 4数据库中的行数

时间:2014-04-11 21:31:47

标签: php laravel laravel-4

您好我正在尝试获取下面我的陈述的当前计数,但我只得到计数而不是整个结果:

 $admins = DB::table('users')
    ->select(DB::raw('count(users.id) as admin_count'))
     ->where('users_roles.role_id', '=' ,0)
    ->join('users_roles', 'users.id', '=', 'users_roles.user_id')
     ->orderBy('first_name', 'asc')
    ->get();

你能告诉我我做错了吗?

由于

3 个答案:

答案 0 :(得分:2)

只需在*子句中使用SELECT,即可获得整个结果集。然后,$admins是一个数组,您可以使用count方法计算其数量。

$admins = DB::table('users')
    ->select('users.*')
    ->join('users_roles', 'users.id', '=', 'users_roles.user_id')
    ->where('users_roles.role_id', '=' ,0)
    ->get();

我假设您只为用户提供了users_roles.role_id = 0一次。对于一个用户,role_id = 0没有多个条目?

我希望这会有所帮助。

答案 1 :(得分:0)

或者你可以使用......

$ admins = User :: roles() - > where('role_id','=',0) - > count();

如果正确设置关系应该有效。

资源:http://laravel.com/docs/eloquent#many-to-many

答案 2 :(得分:-1)

我不确定laravel如何使用查询构建器处理嵌套选择,在普通的sql中,它看起来像这样

SELECT users.id, (SELECT COUNT(users.id) FROM users) AS admin_count
FROM users
JOIN users_roles
ON user_roles.id = users.id
WHERE users_roles.role_id = 0
ORDER BY first_name

我非常确定您可以分配给变量并像$admins = DB::query($sql)

一样运行它