概念を整理
リポジトリパターン
- 解決したい問題
- データストアの参照先が変わっても、プログラムの変更範囲を限定的にしたい
- how
- ビジネスロジックからデータアクセス処理を切り出し
CQRS (コマンドクエリ責務分離)
- 解決したい問題
- レコード数の増大やデータベースクエリの複雑化に伴う応答速度の低下
- how
- コマンドとクエリを担当するデータベースは別物と考える
Laravel
- インジェクションの流れ
Eloquent ↓ Query / Command ↓ Repository ↓ Service ↓ UseCase //ビジネスロジックをカプセル化, 実行時の振る舞いの仕様 ↓ Controller return View <- ViewVers <- ViewComposer <- Repository <- Query
// XxxContoller public function __invoke(XxxFormRequest $request, XxxUseCase $usecase) { $usecase($request->all()); return view(); }