Laravel groupBy 与 select 多个字段

Laravel groupBy with select multiple field

我可以 select country 和 groupBy 结果如下,使用别名 total :

Data::select('country', DB::raw('count(*) as total'))
->groupBy('country')
->get();

以上代码运行良好。 我这里可以select只country字段,但是我需要select和namepositions字段,我这里怎么select多个字段?

首先,您需要指定error/exception您得到的是什么,但您可以通过

添加额外的列
DB::table('table_name')->select([DB::raw('count(*) as total'), 'name', 'positions', 'country'])
->groupBy('country')
->get());

您也可能遇到访问冲突异常,需要您更改 sql_mode

您必须使用如下设置并更改代码。

  1. 打开config/database.php
  2. 在 mysql 连接设置中找到 strict
  3. 将值设为false

像下面这样使用代码

ModelName::groupBy('country')
->selectRaw('count(*) as total, country, name, positions')
->get()