我需要通过字符串名称创建一个模型,它是一个变量。
function($modelName){
$modelName= "backend\\models\\".$modelName;
$modelClass = Yii::createObject([
'class' => $modelName,
]);
$model = $modelClass::find();
}
当我通过Book
(从DB中提取)作为modelName起作用时,它将引发错误:Class backend\models\Book does not exist
。但是当我写的$modelName= "backend\\models\\Book";
时候很好用。
我知道这是因为运行时和编译时。但我不知道如何解决。因为$ modelName是在运行时表征的。
您正在使用对象访问静态方法。您应该仅使用类名称访问静态方法,例如:
$modelName = 'backend\models\\' . $modelName;
$model = $modelName::find();
请记住,$modelName::find()
不要返回模型,而只是返回模型的查询对象。要获得模型,您应该使用例如:$modelName::find()->where(['id'=>$your_value])->one();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句