お世話になります。Laravelでは、システム毎に実装が分けられると思っています。
例えば、ENV_APPがAの時はAシステムで利用したい実装を利用する、ENV_APPがBの時はBシステムで利用したい実装を利用する
といった事が可能だと思っています。
Laravelで実装をシステム毎に分けたい時の理解
- 実装上位概念のInterfaceを用意する
- Interfaceを実装するクラスを作成する
- ServiceProviderでbindする
このようにすれば、AシステムにはAのクラスを、BシステムにはBのクラスを
同じ概念を実装して処理を分けることができているので、このような理解になっています。
問題点
DBを利用する時は、どのように実装を分ければ良いか分かりません。
InterFaceにDIしようとすると、モデルが固定されてしまうので、処理を分けることができません。
interface SearchComponents { public function get_test_data($request,Model/Test $test); // ここでTestモデルに固定されてしまう } class testSearch implements SearchComponents { public function get_test_data($request,Model/Test $test) { $test->searchTestData($request); } }
ここまで書いて思いついたのですが、もしかして、プロバイダーでシステム毎に利用するモデルを変えればいいんでしょうか。
public function register() switch(config('app.env')){ case ('a') $this->app->bind('test',\App\Models\test::class); break case ('b') $this->app->bind('test',\App\Models\test1::class); break } }
このコードで欲しい箇所でapp('test')で取り出せば、とりあえずは解決できるようです…。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。