如何有条件地扩展模型

时间:2016-02-23 00:46:50

标签: activerecord model yii2

我不确定这里是否有正确的术语,但我认为在Yii2中这很容易做,但我似乎无法找到。

我想要一个扩展Location的课程ActiveRecord,但我有两种类型的位置。为了解决这个问题,我将有一个名为location.type的字段,它是枚举('store','campus')。然后我想创建两个扩展名为Store and Campus的模型,每个模型只返回基于type字段的结果。

我看到我认为Yii1.x允许名为find()的模型方法可能像这样工作:

public model find()
{
    return $this->andWhere(['type' => 'store']);
}

但这在Yii2中不起作用。我听起来像是正确的做法吗?我怎样才能最好地实现这个目标?

编辑: 我发现我应该使用这里描述的ActiveQuery *。但是,不调用active()方法(或我命名的任何方法)。我似乎错过了什么。

* http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#customizing-query-classes

1 个答案:

答案 0 :(得分:1)

好的,我需要做的事情要简单得多。我只需要覆盖模型的find()方法,如下所示:

public static function find()
{
    return parent::find()->where(['type' => store']);
}