Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Eloquent Driven Development

Eloquent Driven Development

Laravel 6 Eloquent Driven Development Slide
Laravel x Vue.js 勉強会 in ゆめみ札幌 vol.2 https://larasap.connpass.com/event/148886/

Masaru Yamagishi

October 31, 2019
Tweet

More Decks by Masaru Yamagishi

Other Decks in Programming

Transcript

  1. Laravel DB 下記 Relational DB に対応 - MySQL - PostgreSQL

    - SQLite - SQL Server 内部では PDO を利用している .env とコンフィグファイルで接続情報を指定 複数の RDB を同時に扱うことも可能
  2. Eloquent ORM? - Active Record 型(自律型) Object-Relational Mapper - モデルクラス自身がクエリを発行する

    - RDB テーブルと 1 対 1 で紐づくモデルクラス - `users テーブル` -> `class User extends Model` - 1 インスタンスが 1 レコード - 山ほど機能を搭載
  3. 6. $dates, $casts で手軽にキャストしよう `declare(strict_types=1);` の時に活用出来る 0, 1 の値を boolean

    としたり 日時を Carbon としたり json の値を array としたり出来る PDO 的に基本全部 string で返ってくるので 自動キャストは便利!
  4. 17. DB::listen でクエリログを収集しよう DB::listen(callable $callback) で SQL と実行時間を取得出来る デバッグ環境では EXPLAIN

    を追加発行して、問題のあるクエリでないか ログで確認出来るように拡張しよう パスワードなどの bindings をログに残さないように気を付けよう laravel-debugbar がうまいことその辺やってくれるのでオススメ json API の場合は代わりにログなどに吐くようにしよう
  5. Fin. 1. テーブル名・クラス名は明瞭にしよう 2. プライマリキーは `id` にしよう 3. マイグレーションを手軽にやろう 4.

    $table->timestamps() は気を付けよう 5. Model を作ったら Factory も作ろう 6. $dates, $casts で手軽にキャストしよう 7. 垂直分割時は $connection を指定しよう 8. $attributes は設定しないようにしよう 9. @property をつけよう 10. Local Scope で where 句に名前をつけよう 11. Routing Explicit Model Binding を使おう 12. Policy を設定して認可を手軽に実装しよう 13. API Resources でレスポンスさせてみよう 14. テストに RDB を用いよう 15. コマンド・クエリ責務分離(CQRS) を使おう 16. CarbonImmutable を使ってみよう 17. DB::listen でクエリログを収集しよう