現在laravel5.5を利用してwebアプリケーションを製作しております。
db操作が多くなってきたことからrepositoryパターンの実装を検討しているのですが、実装する上でrepositoryに実装すべき処理の範囲が不明瞭になってしまったので、そちらに関してご教授頂きたく思います。
「コントローラ、サービス、リポジトリ、モデル」の4つがある場合に関してです。
まず私の現在のそれぞれに対する認識は以下のようなものです
######コントローラー:
詳細なロジックは一切記述せず、サービスのメソッドを呼び出す役割と、ビューにレスポンスを返す役割を担う。
######サービス:
ビジネスロジックを記述しdb操作を行う場合はリポジトリのメソッドを呼び出す役割を担う。
######リポジトリ:
モデルを利用したDB操作を記述する。
######モデル:
dbに対するsql発行をテーブルごとに分かりやすくしてくれる物であり、
独自にメソッドを追加すべきではない。
このような認識を持っていたのですが、先日他の方のコードを拝見させて頂いた際に、モデルに独自メソッドをいくつか記入しdb操作を全てモデルが担うように実装している方がいました(リポジトリは利用していない)
私はこの実装に納得してしまいました。
これならリポジトリパターンで行おうとしているビジネスロジックとdbアクセスの分離が問題なく出来ていますし、余計にリポジトリクラスを増やす手間も省けるではないですか。
だったら「なぜこの便利なモデルクラスというものが存在するlaravelでリポジトリパターンを実装したがる人がいるのか」と思ったわけです。
ど素人の考えですのでとんだ的外れな質問になってしまっているかもしれないのですが、以上を踏まえてリポジトリパターンのメリット、また実装時のモデルとリポジトリの使い分けに関してご回答いただけると幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。