我必须将所有列作为参数调用$model->groupBy(?allcols?)
函数。
我该怎么做?
编辑:我将所有列都作为数组,因此我无法通过它们,例如' col1',' col2',..
我问这个是因为我有poblem (github)并且我发现,问题出现在Line 119上。 我尝试手动像col1,col2一样工作,但它应该动态地为所有模型。
我发现这个snippet,将当前表中的所有cols作为数组,但我只能传递一个String。
答案 0 :(得分:0)
没有这样的功能可以对所有列进行分组,但是您可以使用groupBy(col1, col2, ...)
,例如,如果您有posts
表,那么您可以使用:
DB::table('posts')->groupBy('col1', 'col2')->get();
或使用Eloquent
模型,例如Post
模型:
Post::groupBy('col1', 'col2')->get();
答案 1 :(得分:0)
如果您要做的就是摆脱重复记录(这就是groupBy(all)
所能做到的所有记录),您也可以使用$model->distinct()
代替。但是,除非您添加select()
以排除id
字段,否则您最终将获得没有分组的完整记录集,因为根据定义,每个记录的ID都是唯一的,因此赢得了'通过任何一种方式折叠记录。
答案 2 :(得分:0)
好的,如果我正确理解您的修改,您就会得到一组希望分组的列名。如果$model
是您的查询名称,我建议您只使用foreach
循环并附加每个字段:
foreach($allcols as $col){
$model->groupBy($col);
}
$model->get();