Laravel5.1入門その6 collectヘルパを使う
collect([])を使うと、Illuminate\Support\Collectionインスタンスが返ってきて、PHPの貧弱なArrayを便利にしてくれる。
Eloquentを使うときも、これらの便利メソッドが使える。
<?php // 大体のやつはall()をつけないとまだIlluminate\Support\Collectionインスタンスなのでチェーンできる $c = collect([123, 234, 345]); $c->first(); //=> 123 $c->end(); //=> 345 $c->contains(345); //=> true $c->contains(456); //=> false $c->each(function($item, $key){ echo $item; }); $c->filter(function($item){ return $item % 2 === 0; })->all(); //=> [1 => 234] // キーをリセットしたいときはvalues()を挟む $c->filter(function($item){ return $item % 2 === 0; })->values()->all(); //=> [234] $c->map(function($item, $key){ return $item * 2; })->all(); //=> [246, 468, 690] $h = collect(['name' => 'Yamada']); $h->get('name'); // Yamada $h->get('age', 30); // 30 $h->get('gender'); // null $p = collect([ ['city' => 'Tokyo'], ['city' => 'Osaka'], ]); $p->keyBy('city')->all(); //=> ["Tokyo" => ["city" => "Tokyo"], "Osaka" => ["city" => "Osaka"]] $p->pluck('city')->all(); //=> ["Tokyo", "Osaka"] $p->sortBy('city'); $p->where('city', 'Tokyo')->all(); //=> [["city" => "Tokyo"]]
未だに配列の最後の値をとりたいときにどうするか悩むので(そしてググって絶望する)、
最初のfirst()とend()が使えるだけで涙が出る。