GroupBy 不显示所有数据
GroupBy doesn't show all the data
我有一个卖家名单,每个人都支付服务费。我想按降序显示按年份分组的服务费。该组的年份应按降序排列。比如,我输入了 2023、2020、2021 年的数据。组数据应该首先显示 2023,然后是 2021,然后是 2020。首先我尝试使用
$infos = Commision::all()->groupBy('country');
如果我先使用订单,它会显示错误。我有一个先前的问题 here。我试过
$infos = DB::table('service_charges')->groupBy('year')->orderBy('year','DESC')->get();
dd($infos);
但是它显示的只是每组的一个数据。我保存了 3 个数据 here . 2 is from 2021, 1 is from 2020. But the query showing me only one data from each group here。
GROUP BY
SQL 语句用于聚合给定列具有相同值的数据。这意味着您只能获得该列中每个不同值的数据的单个聚合结果(即在您的情况下每年一个值)。
集合groupBy
用于对自己集合中的所有数据进行分组,如果它们具有相同的值。但是,不同之处在于集合中的 groupBy
在查询之后运行,因此此时您不能再 orderBy
。您可以通过以下两种方式解决问题:
- 在查询中排序,然后对结果集合进行分组
$infos = DB::table('service_charges')->orderBy('year','DESC')->get()->groupBy('year');
- 对生成的集合进行排序
$infos = Commision::all()->groupBy('country')->sortKeysDesc();
我有一个卖家名单,每个人都支付服务费。我想按降序显示按年份分组的服务费。该组的年份应按降序排列。比如,我输入了 2023、2020、2021 年的数据。组数据应该首先显示 2023,然后是 2021,然后是 2020。首先我尝试使用
$infos = Commision::all()->groupBy('country');
如果我先使用订单,它会显示错误。我有一个先前的问题 here。我试过
$infos = DB::table('service_charges')->groupBy('year')->orderBy('year','DESC')->get();
dd($infos);
但是它显示的只是每组的一个数据。我保存了 3 个数据 here . 2 is from 2021, 1 is from 2020. But the query showing me only one data from each group here。
GROUP BY
SQL 语句用于聚合给定列具有相同值的数据。这意味着您只能获得该列中每个不同值的数据的单个聚合结果(即在您的情况下每年一个值)。
集合groupBy
用于对自己集合中的所有数据进行分组,如果它们具有相同的值。但是,不同之处在于集合中的 groupBy
在查询之后运行,因此此时您不能再 orderBy
。您可以通过以下两种方式解决问题:
- 在查询中排序,然后对结果集合进行分组
$infos = DB::table('service_charges')->orderBy('year','DESC')->get()->groupBy('year');
- 对生成的集合进行排序
$infos = Commision::all()->groupBy('country')->sortKeysDesc();