unions === null) { $this->unions = []; /** @var UnionModel $model */ $model = $this->getModel(); foreach ($model->getUnions() as list($target, $relations, $columns)) { $query = (new Query()) ->setDb($this->getDb()) ->setModel(new $target()) ->columns($columns) ->disableDefaultSort() ->with($relations); $this->unions[] = $query; } } return $this->unions; } public function getSelectBase() { if ($this->selectBase === null) { $this->selectBase = new Select(); } $union = new Select(); foreach ($this->getUnions() as $query) { $select = $query->assembleSelect(); $columns = $select->getColumns(); $select->resetColumns(); ksort($columns); $select->columns($columns); $union->unionAll($select); } $this->selectBase->from([$this->getModel()->getTableName() => $union]); return $this->selectBase; } }