为了简单起见,我将解释一个伪情况:

有一个users表:

id  |  name  |  status
-----------------------


status列是enum,可以具有3个不同的值:deadsickhealthy

现在,我要在一个页面中显示所有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'];

08-03 16:31