質問: ### 前提 クライアント側はUnity、サーバ側はPHP(Laravel)を使ってアプリを開発しています。 ### 発生している問題 1.UnityからRequestがコントローラーAに渡ってくる。 2.モデルαを使ってαテーブルから必要レコードを取得。 3.モデルβを使ってβテーブルから必要レコードを取得。 4.2と3で取得したデータを使って、足したり引いたりかけたり等などの処理をし、結果となる値を作り出す 5.結果をUnityへjsonで送る(または結果をテーブルへInsertする) 上記のような処理の場合、1~5の内容はすべてコントローラーに記載するのが最適でしょうか。 複数のテーブルデータを取得したり、自分が書いた結果を出すためのロジックが複雑になってくると、コントローラーが肥大化していっています。
回答: 普段私がやるときは、Controller,Service,Repository,Model(DataAccess)のような区切り方をしますね。 2と3はモデルに処理を書いておいて、Repositoryがそれを呼び出すようにします。 ServiceからRepositoryのメソッドを呼び出し、それを処理した上でControllerに返します。 ControllerはRequestのバリデーション、Serviceへの情報の受け渡し、その結果を返すといった役割をもたせます。(正直ここは全部渡してそれを貰うだけみたいにしたほうが良いでしょう) Laravel5.5で、Responsableインターフェースが実装されたので Serviceクラスで整形などはあまりせずにResponsableインターフェースを実装したクラスにデータを渡してあとはResponsableがいい感じにレスポンスを返すみたいな形が良いのかなと思います。 簡単な処理であれば のような感じでもいい感じがします。