为了简单起见,我将解释一个伪情况:
有一个users
表:
id | name | status
-----------------------
status
列是enum
,可以具有3个不同的值:dead
,sick
,healthy
现在,我要在一个页面中显示所有
users
:dead
用户位于顶部,sick
用户位于中间,healthy
用户位于底部!我必须执行三个查询吗?并一一传递给他们查看?
像这样 :
$dead = User::where('status','dead')->get();
$sick = User::where('status','sick')->get();
$healthy = User::where('status','healthy')->get();
还是有更好的方法?如果有10种状态怎么办?还是100?
更新:
我正在寻找查询性能。
最佳答案
您需要使用groupBy函数
$users = User::get()->groupBy('status');
结果会像
/*
[
'dead' => [
//items of dead type
],
'healthy' => [
//items of healthy type
],
'sick' => [
//items of sick type
]
]
*/
您可以访问以下类型的数据:
$users['dead'];