0

私の目標は、ユーザーの「アイテム」をすべて取得し、「ステータス」別にグループ化してビューに表示することです。<div>4 つのステータスがあり、アイテムの情報を含むページにそれぞれ独自のステータスがあります。いくつか突っついた後、次のgroupBy()ようにメソッドを使用する必要があると思います:

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

これはある種のグループ化を行っているように見えますが、コレクションを反復処理すると、ステータスごとに 1 つずつ、最大 4 つの結果が得られます。1つだけではなく、ステータスごとにユーザーのすべてのアイテムを表示する必要があるため、これは私の問題を実際には解決しません。ここで何かが欠けているに違いありません。各ステータスのクエリを作成してそのように表示することは避けたいと思います。コレクションをステータスでフィルタリングして 4 つの新しいコレクションを作成することもできると思いますが、これでよいのgroupBy()ではないでしょうか。

4

1 に答える 1

6

laravel と Collections を使用すると、非常に簡単に行うことができます。コレクションには強力な API と多くの便利なメソッドがあり、目的を簡単に実現できます。

ここでの間違いは、データベースからグループ化されたレコードのみを返す QueryBuilder オブジェクトで groupBy を呼び出していることです。代わりに、必要なすべてのレコードを選択する必要があります。その後、それらはコレクションとして返されます。その後、必要に応じてコレクションを操作できます。したがって、必要なものは次のとおりです。

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

ここで、Colletion クラスの便利なメソッドをすべて表示できます。

于 2015-05-21T05:19:04.370 に答える