计算Laravel 4数据库中的行数

Hi I am trying to get the current count of my statement below , but I am getting only the count not the whole result:

 $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();

Could you tell me what I am doing wrong?

Thanks

Just use * in your SELECT clause, and you get entire resultset. Then, $admins is an array, and you can get its count using count method.

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

I assume you have users_roles.role_id = 0 for exactly once for a user. There are no multiple entries for role_id = 0 for one user right?

I hope this helps.

I am not sure how laravel handles nested selects with the query builder, in plain sql, it would look like this

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

which I am pretty sure you can just assign to a variable and run it like $admins = DB::query($sql)

Or you can use...

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

If the relations are setup correctly that should work.

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