在Yii2中调用模型方法的简单方法是什么?类似的东西:
$a = User::model()->method();
这样的代码:
$a = new User()->method();
不起作用。
答案 0 :(得分:2)
这是最基本的事情。
在Yii1和Yii2中调用模型方法是类似的,并且完成如下:
$model = new User();
$model->method();
请注意,对于Yii2,您还需要指定User
类的名称空间。
该方法必须公开。
如果您不想使用变量赋值,则需要以不同方式放置括号:
(new User)->method();
而不是:
new User()->method();
这是PHP语言功能,它与Yii框架无关。
至于您的具体情况,Yii1中的model()
用于构建ActiveRecord
的查询。
Yii2的替换为find()
方法,您可以在this question中阅读。
答案 1 :(得分:1)
从Yii 2.0.13起,您可以使用instance()
来获取模型的静态实例。它的工作方式与Yii 1.1中的model()
类似 - 只创建一次模型对象,并为每次调用重用它。它应该比(new User())->method()
更快,更易读,这将在每次调用时创建单独的模型。
User::instance()->method();
User::instance()->getAttributeLabel('some_attribute');
答案 2 :(得分:0)
您可以在此处调用以下方法,
$a = new User();
$b = $a->method();
答案 3 :(得分:-1)
在应用程序的任何位置调用模型方法:
\app\model\ModelName::methodName();
\app\modules\ModuleName\models\ModelName::methodName();
答案 4 :(得分:-1)
在yii2中,你可以在模型中调用一个方法,如下所示,
$ a = Model :: method();