Вызов модели Laravel по строке

Можно ли назвать модель Laravel строкой?

Это то, чего я пытаюсь достичь, но его провал:

$model_name = 'User'; $model_name::where('id', $id)->first(); 

Я получаю следующее исключение:

 exception 'ErrorException' with message 'Undefined variable: User' 

Да, вы можете это сделать, но вам нужно использовать полное имя класса:

 $model_name = 'App\Model\User'; $model_name::where('id', $id)->first(); 

Если ваше имя модели хранится в чем-то отличном от простой переменной (например, атрибут объекта), вам нужно будет использовать промежуточную переменную, чтобы заставить ее работать.

 $model = $this->model_name; $model::where('id', $id)->first(); 

Попробуй это:

 $model_name = 'User'; $model = app("App\Model\{$model_name}"); $model->where('id', $id)->first();