基本上我需要做的是:
$x = 'Admin';
$model = new \ReflectionClass($x);
$model->getFieldList();
我在app文件夹中有Admin模型。 显然,这不起作用。有谁有想法吗?可以吗?
答案 0 :(得分:5)
首先,您需要将名称空间添加到模型中。默认情况下,这是App\
。所以你的字符串必须是"\App\Admin"
。现在,您只需使用此字符串创建一个类实例。
$x = '\\App\\Admin';
$model = new $x();
答案 1 :(得分:2)
您可以这样做,但您需要使用完全限定的类名。例如,我的模型位于ScriptErrorsSuppressed
目录中:
Model
答案 2 :(得分:0)
我在控制器构造函数中使用类似的东西。这是我用的:
1)首先在父控制器中声明一个变量,说: $ route_model_name和$ model_location。
然后将其添加到每个子控制器:
function __construct() {
parent::__construct();
$this->setRouteModelName( 'model_route_name' );
$this->setModelLocation( 'App\Models\ModelName' );
}
然后在父控制器中添加一个方法以初始化模型类,以准备进行查询:
/**
* @return mixed
*/
protected function getModelClass() {
return app( $this->model_class );
}
然后,您可以在每个子控制器中更改模型位置和路线,并仍在父控制器中使用相同的方法:
public function edit( $id ) {
return $this->getModelClass()::where( 'id', $id )->first();
}