Laravelコレクションを使いこなす事はデータ処理を効率化することに繋がります。その中でも pluck()
メソッドは大活躍します。
この記事では、Laravelを使い始めたばかりの方や、スキルアップを目指す中級者のために、pluck()の基本的な使い方から、より高度なテクニックまでをわかりやすく解説します。
データ操作の効率を上げ、プログラミングの質を向上させる方法を学びましょう。
目次
pluck で出来る事
pluck (摘み取る) を使う事で指定したキーの値を取得できます。
$collection = collect([
['id' => 100, 'name' => '太郎'],
['id' => 200, 'name' => '二郎'],
]);
$plucked = $collection->pluck('name');
$plucked->all();
// ['太郎', '二郎']
pluckの実装コードはこちら
/**
* Get the values of a given key.
*
* @param string|int|array<array-key, string> $value
* @param string|null $key
* @return static<array-key, mixed>
*/
public function pluck($value, $key = null)
{
return new static(Arr::pluck($this->items, $value, $key));
}
第2引数にはキーにしたい値を設定できます。
$collection = collect([
['id' => 100, 'name' => '太郎'],
['id' => 200, 'name' => '二郎'],
]);
$plucked = $collection->pluck('name', 'id');
$plucked->all();
// [100 => '太郎', 200 => '二郎']
応用編
値を取り出さず、キーを振り直すこともできます。
$collection = collect([
['id' => 100, 'name' => '太郎'],
['id' => 200, 'name' => '二郎'],
]);
$plucked = $collection->pluck(null, 'id');
$plucked->all();
// [
// 100 => [
// 'id' => 100,
// 'name' => '太郎',
// ],
// 200 => [
// 'id' => 200,
// 'name' => '二郎',
// ],
// ]
連想配列にも対応。ドットで繋げた文字列指定か配列で可能です。
$collection = collect([
[
'id' => 100,
'name' => '太郎',
'scores' => ['国語' => 92, '数学' => 73],
],
[
'id' => 200,
'name' => '二郎',
'scores' => ['国語' => 89, '数学' => 47],
],
]);
$plucked = $collection->pluck('scores.数学', 'name');
$plucked->all();
// [
// '太郎' => 73,
// '二郎' => 47,
// ]
$plucked = $collection->pluck(['scores', '国語'], 'name');
$plucked->all();
// [
// '太郎' => 92,
// '二郎' => 89,
// ]
注意点としてはキーが同じ場合には上書きされてしまいます。
$collection = collect([
['bird' => '文鳥', 'color' => '白'],
['bird' => 'インコ', 'color' => '黄色'],
['bird' => '文鳥', 'color' => 'シナモン'],
['bird' => 'インコ', 'color' => '青'],
]);
$plucked = $collection->pluck('color', 'bird');
$plucked->all();
// [
// '文鳥' => 'シナモン',
// 'インコ' => '青',
// ]
モデルから取得したコレクションでも可能です。pluck直接呼び出しも出来るのでこっちの方がスマートですね。
User::all()->pluck('name')->all();
// ['太郎', '二郎']
User::pluck('name')->all();
// ['太郎', '二郎']
最後に
以上、Laravelのコレクションの中での pluck() の使い方を解説しました。
お役に立ちましたら幸いです。今回もお疲れ様でした。
コメントを残す