在Yii2中调用模型方法

时间:2015-08-05 16:10:43

标签: php yii2

在Yii2中调用模型方法的简单方法是什么?类似的东西:

$a = User::model()->method();

这样的代码:

$a = new User()->method();

不起作用。

5 个答案:

答案 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();