单个查询中的Laravel聚合函数

单个查询中的Laravel聚合函数,laravel,eloquent,laravel-eloquent,Laravel,Eloquent,Laravel Eloquent,我有一个用户模型,表中有usersid、email、密码、性别和状态 我想根据条件和性别统计列出用户,以下是我的代码: $users = App\User::where('status', '1'); $users = $users->orderBy('email'); $data['all_users'] = $users; // all users $data['total_males'] = $users->where('gender', 'M')->count();

我有一个用户模型,表中有usersid、email、密码、性别和状态

我想根据条件和性别统计列出用户,以下是我的代码:

$users = App\User::where('status', '1');
$users = $users->orderBy('email');

$data['all_users'] = $users; // all users
$data['total_males'] = $users->where('gender', 'M')->count(); // male count
$data['total_females'] = $users->where('gender', 'F')->count(); // female count

return view('users.list', $data);
即使我已经将结果对象$users传递给$data数组,上述代码也不会返回视图上的所有用户并进行性别筛选

当然,我可以在视图上设置一个male_count和female_count变量,并根据诸如if gender='M'total_males++和display out the loop之类的条件将其递增


我做错了什么?

雄辩者没有执行,因为那里没有任何get或count方法
$data['all_users']=$users->count;//所有用户

在控制器上进行有说服力的查询并将数据传递给视图的正确方法是:

$users = App\User::where('status', '1')->orderBy('email')->get();

$data['all_users'] = $users; // all users
$data['total_males'] = App\User::where('gender', 'M')->count(); // male count
$data['total_females'] = App\User::where('gender', 'F')->count(); // female count

return view('users.list', $data);

只是一件简单的事,我忘了!我有一个习惯,就是把get函数放在view::p上

$data['all_users'] = $users->get(); // all users
$data['total_males'] = $users->where('gender', 'M')->count(); // male count
$data['total_females'] = $users->where('gender', 'F')->count(); // female count
您没有调用get方法。请试一试

$data['all_users'] = $users->get(); // all users

您可以添加错误或更多描述吗?很难理解您必须添加的问题->获取$users以获取数据,您只需添加$users所有用户请再解释一点您的答案。不要只给出代码而不解释原因。只解释你想说的。你在视图上的意思是什么?@Benjaminbrasser在刀片视图上;哦,好的。在视图中调用请求而不是在控制器中调用请求有点奇怪^^^因此,如果您使用get on$users,一切都正常?不要在视图上运行雄辩的查询或修改数据,请在控制器上执行。请:'说真的,'>不需要get,我认为计数应该有效。是的,根据拉威尔的文件,不需要添加get。