序文
コレクションは非常に便利なデータ型です。PHPでは、データを処理するために配列を使用することが多く、laravelは、コレクションによってカプセル化されたデータを処理する多くの方法を提供します。多くの配列は、面倒なことを実行または処理できませんが、コレクションは簡単に処理できます。データを処理するいくつかの方法を節約してください。
指示:
- collect()はコレクションを作成します。
ヘルパー関数collectは、指定された配列の新しいIlluminate \ Support \ Collectionインスタンスを返します。
$collection = collect([
[
'user_id' => '1',
'title' => 'Helpers in Laravel',
'content' => 'Create custom helpers in Laravel',
'category' => 'php'
],
[
'user_id' => '2',
'title' => 'Testing in Laravel',
'content' => 'Testing File Uploads in Laravel',
'category' => 'php'
]
]);
- search()指定された値のセットを検索します
値がコレクションにある場合、対応するキーが返されます。対応する値に一致するデータ項目がない場合、falseが返されます
$names = collect(['Alex', 'John', 'Jason', 'Martyn', 'Hanlin']);
$result = $names->search('Jason');
// 2
- chunk()
chunkメソッドは、コレクションを指定されたサイズの複数の小さなコレクションに分割します。コレクションをグリッドで表示するのに非常に便利です
在这里插入代码片
4.where()query
whereメソッドは、データベースクエリメソッドwhere()のように、指定されたキーと値のペアでコレクションをフィルタリングできます。
$collection = collect([
['product' => 'Desk', 'price' => 200],
['product' => 'Chair', 'price' => 100],
['product' => 'Bookcase', 'price' => 150],
['product' => 'Door', 'price' => 100],
]);
$result = $collection->where('price', 100)->all();
/*
[
1 =>['product' => 'Chair', 'price' => 100],
3 =>['product' => 'Door', 'price' => 100],
]
*/
- dump()コレクションを出力するコレクション
ダンプメソッドを出力します。これを使用して、任意の場所でデバッグし、コレクション内のコンテンツを見つけることができます
$collection->whereIn('price', [100, 150])
->dump()
->where('product', 'Door');
- map()はコレクションをトラバースします
mapメソッドは、コレクション全体をトラバースするために使用されます。パラメータとしてコールバックを受け入れます。値とキーはコールバックに渡されます。コールバックは値を変更して返すことができます。最後に、変更されたアイテムの新しいコレクションインスタンスに戻ります
$changed = $collection->map(function ($value, $key) {
$value['user_id'] += 1;
return $value;
});
$result = $changed->all();
- max()最大
$result = $collection->max('price');
//200
- pluck()列の値を取得します
$result = $collection->pluck('product')->all();
//["Desk","Chair","Bookcase","Door"];
- contains()
containsメソッドは、コレクションに指定された値が含まれているかどうかのみをチェックします。これは、1つのパラメーターのみが渡された場合に発生します
$contains = collect(['country' => 'USA', 'state' => 'NY']);
$contains->contains('USA');
// true
$contains->contains('UK');
// false
- forget()
forgetは、コレクションからアイテムを削除します。キーを渡すと、コレクションからアイテムが削除されます。
$forget = collect(['country' => 'usa', 'state' => 'ny']);
$forget->forget('country')->all();
/*
[
"state" => "ny"
]
*/
- zip()
zipメソッドは、コレクションの値に対応するインデックスで、指定された配列の値をマージします:
$collection = collect(['Chair', 'Desk']);
$result = $collection->zip([100, 200])->all();
// [['Chair', 100], ['Desk', 200]]
- Combine()
combineメソッドは、コレクションのキーを別の配列またはコレクションの値と連結できます:
$collection = collect(['name', 'age']);
$combined = $collection->combine(['George', 29]);
$combined->all();
// ['name' => 'George', 'age' => 29]
- diff()
diffメソッドは、コレクションを別のコレクションまたはネイティブPHP配列と値ベースの方法で比較します。このメソッドは、元のコレクションには存在するが、指定されたコレクションには存在しない値を返します。
$collection = collect([1, 2, 3, 4, 5]);
$diff = $collection->diff([2, 4, 6, 8]);
$diff->all();
// [1, 3, 5]
- diffAssoc()
diffAssocメソッドは、キー値に基づいて、コレクションを別のコレクションまたはネイティブPHP配列と比較します。このメソッドは、最初のコレクションにのみ存在するキーと値のペアを返します。
$collection = collect([
'color' => 'orange',
'type' => 'fruit',
'remain' => 6
]);
$diff = $collection->diffAssoc([
'color' => 'yellow',
'type' => 'fruit',
'remain' => 3,
'used' => 6
]);
$result = $diff->all();
// ['color' => 'orange', 'remain' => 6]
- first()、last()
最初のメソッドは、コレクションの最初の要素を返します。
$result = collect([1, 2, 3, 4])->first();
// 1
$result = collect([1, 2, 3, 4])->first(function ($value, $key) {
return $value > 2;
});
// 3
$result = collect([1, 2, 3, 4])->last();
// 4
- flatten()
flattenメソッドは、多次元コレクションを1次元に変換します。
$collection = collect(['name' => 'taylor', 'languages' => ['php', 'javascript']]);
$flattened = $collection->flatten();
$flattened->all();
// ['taylor', 'php', 'javascript'];
- flip()
flipメソッドはコレクションのキー値を交換します:
$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);
$flipped = $collection->flip();
$flipped->all();
// ['taylor' => 'name', 'laravel' => 'framework']
- forPage()
forPageメソッドは、指定されたページ数のデータ項目を含む新しいコレクションを返します。このメソッドは、最初のパラメーターとしてページ数を受け取り、2番目のパラメーターとして各ページに表示されるデータ項目の数を受け取ります。
$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]);
$chunk = $collection->forPage(2, 3);
$chunk->all();
// [4, 5, 6]
- groupBy()
groupByメソッドは、コレクションデータアイテムを特定のキーでグループ化します
$collection = collect([
['account_id' => 'account-x10', 'product' => 'Chair'],
['account_id' => 'account-x10', 'product' => 'Bookcase'],
['account_id' => 'account-x11', 'product' => 'Desk'],
]);
$grouped = $collection->groupBy('account_id');
$grouped->toArray();
/*
[
'account-x10' => [
['account_id' => 'account-x10', 'product' => 'Chair'],
['account_id' => 'account-x10', 'product' => 'Bookcase'],
],
'account-x11' => [
['account_id' => 'account-x11', 'product' => 'Desk'],
],
]
*/
- keyBy()
keyByメソッドは、指定されたキーの値をコレクションのキーとして受け取ります。複数のデータ項目が同じキーを持っている場合、最後の1つだけが新しいコレクションに表示されます。
$collection = collect([
['product_id' => 'prod-100', 'name' => 'desk'],
['product_id' => 'prod-200', 'name' => 'chair'],
]);
$keyed = $collection->keyBy('product_id');
$keyed->all();
/*
[
'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
]
*/
- sort()、sortBy()、sortByDesc()sort
sortメソッドはコレクションを並べ替えます。並べ替えられたコレクションは元の配列キーを保持します
。sortBy()メソッドは指定されたキー(昇順)でコレクションを並べ替えます。並べ替えられたコレクションは元の配列インデックスを保持します。この例では、値方法が使用されます。リセットキーは連続インデックスです。
sortByDesc()は降順です
$collection = collect([5, 3, 1, 2, 4]);
$sorted = $collection->sort();
$sorted->values()->all();
// [1, 2, 3, 4, 5]
$collection = collect([
['name' => 'Desk', 'price' => 200],
['name' => 'Chair', 'price' => 100],
['name' => 'Bookcase', 'price' => 150],
]);
$sorted = $collection->sortBy('price');
$sorted->values()->all();
/*
[
['name' => 'Chair', 'price' => 100],
['name' => 'Bookcase', 'price' => 150],
['name' => 'Desk', 'price' => 200],
]
*/
コールバックを使用して、コレクションの値を並べ替える方法を決定できます:
$collection = collect([
['name' => 'Desk', 'colors' => ['Black', 'Mahogany']],
['name' => 'Chair', 'colors' => ['Black']],
['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']],
]);
$sorted = $collection->sortBy(function ($product, $key) {
return count($product['colors']);
});
$sorted->values()->all();
/*
[
['name' => 'Chair', 'colors' => ['Black']],
['name' => 'Desk', 'colors' => ['Black', 'Mahogany']],
['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']],
]
*/
- 取る()
takeメソッドは、指定された数のデータ項目を使用して新しいコレクションを返します。
$collection = collect([0, 1, 2, 3, 4, 5]);
$chunk = $collection->take(3);
$chunk->all();
// [0, 1, 2]
Laravelコレクションの使用に関する中国語のドキュメント:https://laravelacademy.org/post/19507