Laravelを使ってみて
はじめに
mediba advent calendar 2016 の21日目担当 @tetaketa です。
私のチームではyii2を使っていたのですが、新規開発のタイミングで、別のフレームワークもと思って色々検討した結果、Laravelを使ってみることになりました。
Laravelを使い始めて困ったことや調べたことをtipsとして紹介します。
Laravelのバージョンは5.2です。
ルーティングに名前をつける
viewでURLを埋め込むときやリダイレクトするときに、URLをべた書きしたくない。
そんなときは、routes.php
の設定で名前をつけると、route()
で呼び出せます。
Route::group(['as' => 'campaign::'], function () {
Route::get('campaign', 'CampaignController@index')->name('index');
Route::get('campaign/create', 'CampaignController@create')->name('create');
});
route('campaign::create')
で呼び出せます。
引数に値の入ったクラスをDI
Laravelのサービスコンテナ(DIコンテナ)だと、コンストラクタにタイプヒントで指定すれば、勝手にbindしてくれます。
引数を持ったクラスの場合、例えばS3のclientとかの場合だとどうすれば良いのかと思って調べてみました。
デフォルトで存在するAppServiceProvider.php
を利用します。
register()
の中にbind
を書くだけ。
これで、Aws\S3\S3Client
をタイプヒントすると勝手にbindしてくれます。
public function register()
{
$this->app->bind('Aws\S3\S3Client', function ($app) {
return new S3Client(config('services.s3'));
});
}
Collectionについて
LaravelのEloquent ORMを使ってDBから複数の値を取得すると、LaravelのCollectionクラスとして返ってきます。
keyBy
は、指定したキーをキーにしたコレクションを返してくれます。
id
をキーにしたいときとかに使っています。
pluck
は、コレクションから指定した値だけを取得できます。
まとめ
Laravelはドキュメントがしっかりしていて開発しやすいです。
なるべく早く5.3にアップデートしたいと思います。