25

laravel コレクション オブジェクトがあります。

その中でn番目のモデルを使いたいです。

どうすればアクセスできますか?

編集:

laravel documentationで適切な方法が見つかりません。foreach ループでコレクションを反復処理し、n 番目の項目が見つかったときに中断することができます。

foreach($collection as $key => $object)
{
    if($key == $nth) {break;}
}
// $object is now the nth one

しかし、これは面倒なようです。

よりクリーンな方法は、上記のループを 1 回実行し、コレクション内のすべてのオブジェクトを含む単純な配列を作成することです。しかし、これは不必要な重複のようです。

laravel collection class documentationにはfetch メソッドがありますが、これはコレクションのn番目のものではなく、主キーに一致するコレクションからオブジェクトをフェッチすると思います。

4

4 に答える 4

1

並べ替え後にインデックスを保持するコレクションに問題がある場合は、そのコレクションの値から新しいコレクションを作成し、期待どおりに新しくインデックスが作成されたコレクションにアクセスしてみてください。

例: コレクション内で 2 番目に高い価格のアイテムを取得する

$items = collect(
                 [
                  "1" => ["name" => "baseball", "price" => 5],
                  "2" => ["name"=> "bat", "price" => 15],
                  "3" => ["name" => "glove", "price" => 10]
                 ]
                );

collect($items->sortByDesc("price")->values())[1]["name"];

// Result: glove

モーフの回答に似ていますが、同じではありません。インデックスが各項目に結合されたままになるため、単にvalues()並べ替えの後に使用しても期待どおりの結果が得られません。

Laravel Github でのこのソリューションの @howtomakeaturn の功績: https://github.com/laravel/framework/issues/1335

于 2019-09-06T19:17:21.097 に答える