使用する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';
と書く必要があるので注意。