/** * @return ActiveQuery * @throws \yii\base\InvalidConfigException */ public static function find() { /** @var ActiveQuery $query */ $query = Yii::createObject(ActiveQuery::className(), [get_called_class()]); $query = $query->innerJoinWith(['defaultTranslation']); /** @var ActiveRecord|MultilingualActiveRecord $modelInstance */ if (method_exists(get_called_class(), 'applyDefaultScope')) { $query = call_user_func([get_called_class(), 'applyDefaultScope'], $query); } else { $modelInstance = new self(); if ($modelInstance->translationPublishedAttribute !== false) { /** @var ActiveRecord $translationModelClassName */ $translationModelClassName = $modelInstance->getTranslationModelClassName(); $tableName = $translationModelClassName::tableName(); // add condition on $where = ["{$tableName}.{$modelInstance->translationPublishedAttribute}" => $modelInstance->translationPublishedAttributeValue]; unset($modelInstance); $query = $query->where($where); } } return $query; }