在ActiveQuery init()中获取当前的模型别名Yii2

时间:2019-02-20 16:12:27

标签: yii2

我有一些模型,它们的ActiveQuery是用默认条件定义的。

class ProfileQuery extends \yii\db\ActiveQuery{
    public function init(){
        $this->andOnCondition(['not',[Profile::tableName().'.status'=>2]]);
        parent::init();
    }
...

问题是,如果我在另一个模型搜索中使用带有别名的联接,则init()的{​​{1}}函数仍然尝试搜索ProfileQuery

tablename.status函数中是否可以获取当前别名?

1 个答案:

答案 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()中可能会毫无用处。