动态调用 Laravel 模型

4
我尝试动态调用一个模型,但是出现了问题..
Class 'xxx' not found

这是我的代码:

use App\xxx;
.
.
.

$model = ucfirst(explode('_', $title)[0]);
$model::where('name', 'john')->get()->toArray();

dd($model)的作用:

"xxx"

try dd($model) - Sohel0415
@Sohel0415,我更新了我的答案。 - CairoCoder
为什么?我真的想不出一个好的理由来动态调用Laravel模型。 - Martin Bean
@MartinBean,我正在尝试从Excel文件中插入一些表格,如果按照静态方法进行,这将会很麻烦。 - CairoCoder
3
可以通过字符串调用Laravel模型。使用app()方法获取服务容器的实例,然后使用make()方法传入模型类名的字符串形式来创建模型实例。例如,如果要调用名为User的模型,可以使用以下代码:$model = app()->make('App\Models\User');这将返回一个User模型的实例,您可以像平常一样使用该实例进行查询等操作。 - Amarnasan
正如@Amarnasan所说,尝试使用完整路径。 - Sohel0415
1个回答

13
如果 $xxx 不是完整的类名,则执行以下操作:
$model = 'App\\' . $model;
$model::where('name', 'john')->get()->toArray();

我无法移除这部分,它就是一切,它是动态本身。 - CairoCoder
@CairoCoder 为什么你不能移动这部分?请给出真实数据和模型类名称的示例。只有在使用真实完整的类名时,此方法才有效。 - Alexey Mezenin
你的最后一次编辑很完美,第二部分帮了我大忙 :) - CairoCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接