Laravel7 動的にモデルを切り替える方法

テーブルに対してある処理を複数のテーブルが持っている場合、複数のモデルに同じ処理を書くようになってしまうけど、実体は1箇所にして、モデル(テーブル)を都度切り替える方法

例えば、テーブルA、テーブルB、テーブルCにxxxxというカラムがあって、それぞれのテーブルのxxxxカラムに同じ処理したい場合、モデルA、B、C全てに同じ処理を記述してしまいがちだが、親クラスを作り親クラスに実体を記述して、モデルA、B、Cからはパラメータに自モデルを渡して親モデルのメソッドをコールするようにする。

対応前

モデルA

tableA::何かの処理

モデルB

tableB::何かの処理

モデルC

tableC::何かの処理

対応後

親クラス

protected function hoge($model){
    $model->何かの処理
}

モデルA

$this->hoge(new モデルA());

モデルB

$this->hoge(new モデルB());

モデルC

$this->hoge(new モデルC());

にした方が、同じ(似たような)処理が複数存在せずに綺麗だと思う。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です