📜  laravel 中的分组条件 - PHP (1)

📅  最后修改于: 2023-12-03 15:32:34.176000             🧑  作者: Mango

Laravel 中的分组条件

在Laravel中,我们经常需要按一定条件对查询结果进行分组,这时就可以使用分组条件。

基本用法

可以使用groupBy方法对查询结果进行分组,例如下面示例代码将订单按照用户ID进行分组:

$orders = DB::table('orders')
    ->select(DB::raw('user_id, sum(total) as total'))
    ->groupBy('user_id')
    ->get();

在该代码中,groupBy方法指定了分组条件,是根据user_id实现的。

多个字段分组

如果需要根据多个字段进行分组,可以使用多次调用groupBy方法,例如下面示例代码将订单按照用户ID和时间进行分组:

$orders = DB::table('orders')
    ->select(DB::raw('user_id, date(created_at) as day, sum(total) as total'))
    ->groupBy('user_id')
    ->groupBy(DB::raw('date(created_at)'))
    ->get();

在该代码中,groupBy方法调用了两次,第一次按照user_id分组,第二次按照date(created_at)分组。

Having条件

如果需要根据一定条件过滤分组后的结果,可以使用having方法,例如下面示例代码将订单按照用户ID进行分组,然后只保留总金额超过10000的分组:

$orders = DB::table('orders')
    ->select(DB::raw('user_id, sum(total) as total'))
    ->groupBy('user_id')
    ->having('total', '>', 10000)
    ->get();

在该代码中,groupBy方法指定了分组条件,having方法指定了筛选条件,只保留符合条件的分组。

总结

使用分组条件可以方便地对查询结果进行分组和筛选,从而更好地满足业务需求。在使用时需要注意区分groupByhaving方法的作用,避免滥用导致性能问题。