Activerecord 如何有条件地扩展模型

Activerecord 如何有条件地扩展模型,activerecord,model,yii2,Activerecord,Model,Yii2,我不确定这里的术语是否正确,但我认为这在Yii2中很容易做到,但我似乎找不到如何做到 我想要一个类Location,它扩展了ActiveRecord,但是我有两种类型的位置。为了处理这个问题,我将有一个名为location.type的字段,它是enum('store','campus')。然后我想创建两个扩展名为Store和Campus的Location的模型,每个模型只返回基于type字段的结果 我看到我认为Yii1.x允许一个名为find()的模型方法,其工作方式如下: public mod

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

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

我看到我认为Yii1.x允许一个名为find()的模型方法,其工作方式如下:

public model find()
{
    return $this->andWhere(['type' => 'store']);
}
但这在Yii2中不起作用。我所做的听起来像是正确的方法吗?我如何才能最好地实现这一点

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


*好的,我需要做的是简单得多。我只需要重写模型的find()方法,如下所示:

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

是的,这是最简单的方法,但如果您需要更好的方法来处理更复杂的情况,那么我建议您: