laravel按多列分组

时间:2016-09-23 12:23:23

标签: php sql database laravel

我正在使用laravel 5.2,我想根据两列(配置和类型)的值对表进行分组。所以基本上如果表中的两行或多行具有相同的配置和类型,它们将被分组。 我试过像这样查询而不能正常工作:

 $groups = Model::where('active', 1)->get()->groupBy('type_id', 'configuration_id');

有什么建议吗?

编辑:我认为我使用了错误的查询。我想要做的是获取这两列中具有相同值的行并将它们分组。显然,分组用于聚合事物,例如,如果我想要总和或其他东西。

编辑2:实际上我在这里使用的groupby不是查询的一部分它是由laravel提供的用于集合的帮助函数看到这个link有没有人知道它是否由两个组合组成??

5 个答案:

答案 0 :(得分:3)

以数组形式传递列名,这对我有用

$groups = Model::where('active', 1)->groupBy(['type_id', 'configuration_id','etc']);

答案 1 :(得分:1)

试试这个

$groups = Model::where('active', 1)->groupBy('type_id', 'configuration_id');

答案 2 :(得分:1)

好的,我已经弄清楚了。 我正在使用的groupBy方法不是一个查询,它是一个laravel函数,它通过某个feild对集合进行分组。您可以看到文档here。所以解决方法是像这样两次进行分组。

from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)

如果有人有更有效的方式这样做,我希望看到他们这样做的方式。

答案 3 :(得分:0)

 $groups = Model::where('active', 1)->groupBy('type_id', 'configuration_id')->get();

答案 4 :(得分:0)

$groups = Model::where('active', 1)->groupBy('type_id', 'configuration_id')->get(['type_id', 'configuration_id']);