Laravel 4 Query groupBy:表中的所有列

时间:2014-04-03 12:09:42

标签: php sql laravel laravel-4

我必须将所有列作为参数调用$model->groupBy(?allcols?)函数。

我该怎么做?

编辑:我将所有列都作为数组,因此我无法通过它们,例如' col1',' col2',..

我问这个是因为我有poblem (github)并且我发现,问题出现在Line 119上。 我尝试手动像col1,col2一样工作,但它应该动态地为所有模型。

我发现这个snippet,将当前表中的所有cols作为数组,但我只能传递一个String。

3 个答案:

答案 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();