LoginSignup
0
0

More than 3 years have passed since last update.

Laravel5: Controll内で使用するEloquentモデルを動的に変更

Posted at

使用するEloquentモデルが違うだけで処理が同じControllerがあったので、一つにまとめたかった。

モデル名を入れた変数で呼び出す

呼び出すClass名を変数に格納すれば、そこからnewもstaticメソッドも利用が可能。

例えばinputで受け取った値が"staff"ならStaff::select(〜、それ以外ならUser::select(〜に切り替えたい場合。

HogeController.php
class HogeController extends Controller
{
    public function index(Request $request)
    {
        if ('staff' === $request->type) {
            $table = 'App\Staff';
        } else {
            $table = 'App\User';
        }
        $contents = $table::select('id', 'name')->get();
        return response()->json($contents);
    }
}

変数に入れる文字列はuse App\Staff;を設定していても$targetModel = 'App\Staff';と書く必要があるので注意。

参考

PHPにおいてstaticメソッドの呼び出し元クラスを動的に変更

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0