Laravel
https://laravel.com/
非公式和訳:https://readouble.com/laravel/11.x/ja/installation.html
PHPにおける重量級Webフレームワーク
参考資料
おすすめリンク集
リファレンス
ログ出力
\Log::debug("debug ログ!");
ヘルパーを使う場合 logger("debug ログ!");
コントローラの作成
https://readouble.com/laravel/9.x/ja/controllers.html
モデルの使い方
https://readouble.com/laravel/9.x/ja/eloquent.html
https://readouble.com/laravel/9.x/ja/eloquent-relationships.html
Seederの作成:php artisan make:seeder {className}
リレーション先を含めた検索(ジョブが戦士である仲間を探す時とか)
whereHasを使う。
code:php
Companion::with('job')->whereHas('job' function($query) {
$query->where('type', 'warrior');
});
ビュー周り
https://readouble.com/laravel/9.x/ja/blade.html
バリデーション
日本語化
https://qiita.com/samuraibrass/items/d71c08e144dbbf98e348
組み込みのバリデーションルール
https://readouble.com/laravel/9.x/ja/validation.html#available-validation-rules
言語拡張(Railsで言うActiveSupport)
https://readouble.com/laravel/9.x/ja/contracts.html
なんか思い違いをしてる気がする
https://readouble.com/laravel/9.x/ja/helpers.html
REPL
php artisan tinker
https://readouble.com/laravel/9.x/ja/artisan.html
Eloquentが作成したSQLをログに出す
https://qiita.com/ucan-lab/items/753cb9d3e4ceeb245341
サービスプロバイダの登録状況や、.envの内容がキャッシュされるらしく、削除しないと反映されなかった
Laravel キャッシュクリア系コマンドなど
ソースコード
https://github.com/laravel
フレームワーク側のソースは、https://github.com/laravel/framework に入ってる
サービスコンテナとサービスプロバイダ
Laravelのマニュアルにはこれは素晴らしいと書いている。
あるクラスのインスタンスを生成してもらうのがサービスコンテナ。
インスタンス生成のルールを定義するのがサービスプロバイダ。
UnitTestの際に包含関係のクラスをモックに差し替えたい時に、コードをいじらずに差し替えるための仕組みっぽい
つまづいた事メモ
レコード追加すると、プライマリキーが化ける
https://qiita.com/Kra8/items/bc2b99ab7ab9880cecf8
laravelのModelは、auto_incrementされることが前提となっているようで、auto_incrementしないテーブルを作成した場合、レコードを追加すると、そのインスタンスのプライマリキーが0に化ける。
auto_incrementしないテーブルは、public $incrementing = false; を定義すること。
よりツッコンだ話として、$id = $query->getConnection()->getPdo()->lastInsertId($sequence);は、SQLでSELECT LAST_INSERT_ID();になるらしく、この時、auto_incrementせずにレコード追加すると、このSQLの結果が0になる
サービスコンテナとサービスプロバイダ、ファサードに関する走り書き
LaravelにおけるDI(依存性の注入)は、Laravelがインスタンスを生成した場合に行われる
new Hoge()ではダメで、app()->make()によるインスタンス生成を行う必要がある。
ControllerやConsoleなどの、Laravelが勝手にインスタンスを作る物に関しては、DIが行われる。
なお、ModelはDIされないし、する概念もない。
DIで注入される側(中身の方)のことはサービスと呼ばれている。サービスプロバイダで登録する事で、DIの対象になる
クエリビルダのクローン
$clonedBuilder = clone $builder;