按字符串调用拉拉维尔模型

2022-08-30 15:28:12

是否可以通过字符串调用Laravel模型?

这就是我试图实现的目标,但它失败了:

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

我得到以下异常:

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

答案 1

是的,您可以执行此操作,但需要使用完全限定的类名:

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

如果您的模型名称存储在普通变量以外的其他变量中(例如对象属性),则需要使用中间变量才能使其正常工作。

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

答案 2

试试这个:

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

推荐