按字符串调用Laravel模型

Par*_*oni 18 php laravel laravel-5.1

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

这是我想要实现但它失败的原因:

$model_name = 'User';
$model_name::where('id', $id)->first();
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

exception 'ErrorException' with message 'Undefined variable: User'
Run Code Online (Sandbox Code Playgroud)

pat*_*cus 36

是的,您可以这样做,但您需要使用完全限定的类名:

$model_name = 'App\Model\User';
$model_name::where('id', $id)->first();
Run Code Online (Sandbox Code Playgroud)

如果您的模型名称存储在除普通变量之外的其他内容(例如,对象属性),则需要使用中间变量才能使其生效.

$model = $this->model_name;
$model::where('id', $id)->first();
Run Code Online (Sandbox Code Playgroud)


Eme*_*bah 9

试试这个:

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

  • 您能解释一下为什么要使用app()吗?提前致谢 (3认同)