我在我的一个模型(find()
)中声明了Lab
方法来修改SQL中的WHERE
子句:
public static function find()
{
return parent::find()->where(['deleted' => false]);
}
仅在直接调用find()
时修改搜索结果。像那样:
$dataProvider = new ActiveDataProvider([
'query' => Lab::find(),
]);
或者那样:
$labs = Lab::find()->all();
但是,当对此方法的任何调用都使用自己的where()
,orWhere()
或andWhere()
时:
$labs = Lab::find()
->where(Lab::getWhereArray())
->orderBy('position')
->all();
然后忽略内部修改。
根据docs,这是可以理解的。但是,如何强制我的模型始终返回修改后的结果。那么,无论如何调用它,它总会修改搜索条件?
答案 0 :(得分:0)
andWhere()
中添加find()
- 覆盖应该可以胜任。
试试吧:
public static function find()
{
return parent::find()->andWhere(['deleted' => false]);
}