如何通过字符串名称在yii2中创建模型对象?

拉曼

我需要通过字符串名称创建一个模型,它是一个变量。

       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是在运行时表征的。

scaisEdge

您正在使用对象访问静态方法。您应该仅使用类名称访问静态方法,例如:

$modelName = 'backend\models\\' . $modelName;
$model = $modelName::find(); 

请记住,$modelName::find()不要返回模型,而只是返回模型的查询对象。要获得模型,您应该使用例如:$modelName::find()->where(['id'=>$your_value])->one();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从JavaScript中的字符串创建日期对象

如何通过分割字符串创建Person对象

您如何以编程方式从存储在字符串中的日期创建模式?

如何在Swift中根据字符串创建对象?

如何从Crystal中的字符串名称创建类实例?

如何从yii2中的不同模型创建视图?

Yii2>如何将_form视图的html输出存储到字符串变量中

Flask-Restplus:如何为字符串或对象建模?

如何在Yii2查询中编写替换字符串函数

如何从Java脚本中的字符串创建对象树

我们如何使用javascript对象中的字符串名称存储创建Backbone视图的实例?

如何通过符号名称的字符串输入在Clojure中创建类型?

Yii2类Closure的对象无法转换为字符串

Yii2:如何从Yii2中的给定字符串生成用户ID?

如何从数组中的子字符串创建arraylist对象

如何通过Python中的内容创建模块对象

数据未通过yii2中的模型保存

Yii2 htmlspecialchars()期望参数1为字符串,给定对象

Pimcore:通过包含类名称的字符串创建名称分隔的对象

如何在php中创建字符串对象数组?

如何使用 Angularjs 2 中的接口为复杂的 JSON 对象创建模型

如何在yii2中的pdf标题上打印字符串

Yii2 Codeception 接受类名必须是有效的对象或字符串

如何从 SMS 文本字符串创建模式?

在 Swift 4.2 中从字符串创建模态类

如何使用 OneToOneField 创建模型对象

如何通过存储在字符串中的名称访问类的对象?

如何通过字符串中的 ManyToManyField 过滤对象

在 Raku 中,如何从字符串动态创建 Code 对象?