[英]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.