ハマログ

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

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日


関連記事

MarkdownでWordPressの記事を投稿してみた!

どうも!宇都宮です! 過去に投稿した、「WordPressで簡単に記事を投稿する…

joomla!3データベーステーブル作成時にフリーズ

この度、XAMPPを利用してWindowsパソコンにJoomla!3.3.0をイ…

Github Copilot for Businessが一般提供されたので導入しました

2021年にプレビューリリースされ、その後一般リリースされたGithub Cop…


← 前の投稿

次の投稿 →