Laravel在单个查询中聚合函数

时间:2017-08-28 07:50:54

标签: laravel eloquent laravel-eloquent

我有一个用户模型,其中包含一个用户表(ID,电子邮件,密码,性别,状态)

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

$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 ++这样的条件递增它,并显示出循环。

我在这里做错了什么?

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

只是一件简单的事,我忘记了!我习惯在视图上放置get()函数:: 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

答案 2 :(得分:0)

您没有调用func injectTextInSearchView(_ text: String, _ view: UIView) { if let view = view as? UISearchBar { view.text = text view.delegate?.searchBar!(view, textDidChange: text) return } for subview in view.subviews { injectTextInSearchView(text, subview) } } 方法。请尝试

get

答案 3 :(得分:-2)

Eloquent没有执行,因为那里没有任何获取或计数方法 $ data ['all_users'] = $ users-> count(); //所有用户