laravelでsqlでjoinしたコードの参照を共通化させたい
laravelのコントローラー内にleft joinしたコードがあるのですが、別のコントローラーからも参照させるので、共通化させようと考えています。
例えば、ExampleAControllerのメソッド内に3つのテーブルをleft joinで取得するコードがあったとして、
他のコントローラー(例:ExampleBController、ExampleCController)などにも同様のコードがあると、コードの重複になるので別の箇所にコードをまとめておきたいといった感じです。
SampleAなどのモデル内に設置したり、専用のクラスを作成してそこから参照させるなどの方法があると思いますが、
どのような方法で対処するのが理想なのでしょうか。
php
1class ExampleAController extends Controller 2{ 3 public function index(Request $request) 4 { 5 // 略 6 7 $data = SampleA::from('sample_a as a') 8 ->leftJoin('sample_b as b', 'a.sample_b_id', '=', 'b.id') 9 ->leftJoin('sample_c as c', 'a.sample_c_id', '=', 'c.id') 10 ->select(['column_a', 'column_b']) 11 ->where('b.id', 1) 12 ->where('c.id', 2) 13 ->get(); 14 15 // 略 16 } 17}
補足情報
Laravel Framework 6.18.18
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/17 19:11