我正在使用laravel 5.2,我想根据两列(配置和类型)的值对表进行分组。所以基本上如果表中的两行或多行具有相同的配置和类型,它们将被分组。 我试过像这样查询而不能正常工作:
$groups = Model::where('active', 1)->get()->groupBy('type_id', 'configuration_id');
有什么建议吗?
编辑:我认为我使用了错误的查询。我想要做的是获取这两列中具有相同值的行并将它们分组。显然,分组用于聚合事物,例如,如果我想要总和或其他东西。编辑2:实际上我在这里使用的groupby不是查询的一部分它是由laravel提供的用于集合的帮助函数看到这个link有没有人知道它是否由两个组合组成??
答案 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']);