簡體   English   中英

如何在雄辯的ORM中使用groupBy()對集合進行分組

[英]How to use groupBy() in Eloquent ORM to group a collection

我的目標是檢索用戶的所有“項目”,然后按其“狀態”分組顯示在我的視圖中。 有4種可能的狀態,每個狀態在包含項目信息的頁面上都有自己的<div> 經過一番groupBy() ,我相信我需要像這樣使用groupBy()方法:

$items = Item::ownedBy( Auth::id() )->groupBy('status')->get();

這似乎確實做了某種分組,但是當我遍歷集合時,我最多得到4個結果,每個狀態一個。 這並不能真正解決我的問題,因為我需要針對每個狀態顯示用戶的所有項目,而不僅僅是一個。 我必須在這里丟失一些東西,我真的很想避免對每種狀態進行查詢並以這種方式顯示它們。 我想我可以按狀態過濾集合並創建4個新集合,但這不是groupBy()應該做的嗎?

您可以使用laravel和Collections非常輕松地做到這一點。 集合具有強大的API和許多方便的方法,可以輕松實現所需的功能。

您在這里的錯誤是,您正在對QueryBuilder對象調用groupBy,該對象僅返回按數據庫記錄分組的對象。 相反,您必須選擇所需的所有記錄,然后它們將作為集合返回。 之后,您可以根據需要操縱集合。 因此,您需要的是:

$items = Item::ownedBy( Auth::id() )->get()->groupBy('status');

您可以在此處查看所有Colletion類有用的方法。

暫無
暫無

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

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