簡體   English   中英

Laravel 4 Query groupBy:表中的所有列

[英]Laravel 4 Query groupBy: all columns from table

我必須用所有列作為參數來調用$model->groupBy(?allcols?)函數。

我應該怎么做?

編輯:我有所有列作為數組,所以我不能像'col1','col2',...

我問這個問題是因為我有這個問題(github) ,我發現那里的問題就在119行上 我像col1,col2一樣手動嘗試了,但是它應該動態地適用於所有模型。

我找到了此代碼段 ,以將當前表中的所有列作為數組獲取,但我只能傳遞一個String。

沒有用於對所有列進行分組的功能,但是您可以使用groupBy(col1, col2, ...) ,例如,如果您有一個posts表,則可以使用:

DB::table('posts')->groupBy('col1', 'col2')->get();

或使用Eloquent模型,例如Post模型:

Post::groupBy('col1', 'col2')->get();

如果您想要做的就是擺脫重復的記錄(這是groupBy(all)所能做的groupBy(all) ),那么您也可以只使用$model->distinct() 但是,除非您添加select()來排除id字段,否則您將獲得沒有分組的完整記錄集,因為根據定義,id對每個記錄都是唯一的,因此任何一個記錄都不會折疊方式。

好的,如果我正確地理解了您的修改,那么您就有了一組希望分組的列名。 如果$model是查詢的名稱,我建議僅使用foreach循環並附加每個字段:

foreach($allcols as $col){
    $model->groupBy($col);
}
$model->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM