ハマログ

株式会社イーツー・インフォの社員ブログ

Laravel Collectionのpluckとlistsについてまとめ(5.2以降はpluck)

Laravelの5系のpluckとlistsについて、混乱したのでまとめておきます。

ことの発端は、Return collection from the query builder #10478にあるとおり、listsメソッドがQuery BuilderとEloquentで異なる戻り値を返却する仕様となってしまったことを、コミュニティが解決しようとしたためで5.3で無事に解決しました。

lists

従来のLaravel(~5.1)では、Collectionに対してlistsメソッドを利用することで、引数に指定したkeyのvalues()を取得することができました。

$users = collect([
    ['id' => 1, 'name' => '太郎'],
    ['id' => 2, 'name' => '二郎'],
]);

$users->lists('name');
// ['太郎', '二郎']

$users->lists('name', 'id');
// [1 => '太郎', 2 => '二郎']

lists == pluck(listsメソッドは非推奨)

Laravel5.2で、新たにpluckメソッドが実装されました。内部の実装はlistsと完全に同一でした。この時点でlistsメソッドは@depricated(非推奨)となりました。

ドキュメント

https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0

Deprecations
The lists method on the Collection, query builder and Eloquent query builder objects has been renamed to pluck. The method signature remains the same.

ソースコード

https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Builder.php#L458

/**
* Alias for the “pluck” method.
*
* @param string $column
* @param string $key
* @return \Illuminate\Support\Collection
*
* @deprecated since version 5.2. Use the “pluck” method directly.
*/
public function lists($column, $key = null)
{
return $this->pluck($column, $key);
}

ということで、5.2ではlistsは使わないようにしましょう。

lists → pluck

Laravel5.3で、listsメソッドはなくなりました。今後はpluckメソッドを利用しましょう。

$users = collect([
    ['id' => 1, 'name' => '太郎'],
    ['id' => 2, 'name' => '二郎'],
]);

$users->pluck('name');
// ['太郎', '二郎']

$users->pluck('name', 'id');
// [1 => '太郎', 2 => '二郎']

以上

collectionLaravellaravel5.2Laravel5.3listlistsPHPpluckコレクション

  kaneko tomo   2017年1月3日


関連記事

Laravel4.2のソフトデリート(論理削除)について

Laravel4.1で開発中のシステムをLaravel4.2にアップグレードしま…

ReactPHPをLaravelで実行してみた

以前、ReactPHPを使用していたことがあるので、Laravelで実行させてみ…

テストに役立つツール紹介 -Hedgehog-

つーじーです。横浜市長選が終わり、新しい市長が就任いたしました。今後ヨコハマがど…


← 前の投稿

次の投稿 →