我有一些模型,它们的ActiveQuery是用默认条件定义的。
class ProfileQuery extends \yii\db\ActiveQuery{
public function init(){
$this->andOnCondition(['not',[Profile::tableName().'.status'=>2]]);
parent::init();
}
...
问题是,如果我在另一个模型搜索中使用带有别名的联接,则init()
的{{1}}函数仍然尝试搜索ProfileQuery
在tablename.status
函数中是否可以获取当前别名?
答案 0 :(得分:0)
目前无法实现。自Yii 2以来,别名支持有限一直是个问题,但最近它已推迟到Yii 3,并且很可能不会在Yii 2中得到解决:https://github.com/yiisoft/active-record/issues/33
有人尝试解决此问题,但都没有定稿和合并。如果确实需要,可以使用这些PR中的一些代码,并在自定义组件或fork中自己实现:
从Yii 2.0.16开始,您也可以使用ActiveQuery::getTableNameAndAlias()
,但在init()
中可能会毫无用处。