ぷっぽプログラミング備忘録

linux, javascript, php, C#, そのうちScalaとかアプリ開発とかやってみたいです。

Laravel collectionのkeyBy()メソッドで、pluck()と似たようなことができる

概要

Laravelで、DBテーブルの取得結果を、特定のカラムをキーとして取得したい場合、調べるとpluck()がよくでてくる。 ただ、KeyBy()でもできる。 QueryBuilderなどではget()などでいったん取得してきておいて、後から加工するほうがいいケースもありそうなので記載。

公式そのままです…

$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'],
    ]
*/

keyByメソッドは指定したキーをコレクションのキーにします。複数のアイテムが同じキーを持っている場合、新しいコレクションには最後のアイテムが含まれます。

参考

Collections - Laravel - The PHP Framework For Web Artisans