public function joinModels(Model $modelA, Model $modelB, $type = 'inner', $bNoSelect = false) { $type = in_array($type, ['inner', 'left', 'right']) ? $type : 'inner'; if (!$bNoSelect) { $this->addSelect($modelB->getColumns(true, true, true)); } switch ($type) { default: case 'inner': $this->innerJoin($modelA->getAlias(), $modelB->getTable(), $modelB->getAlias(), $modelA->getAlias() . '.' . $modelB->getOwnExternalForeignKey() . ' = ' . $modelB->getAlias() . '.' . $modelB->getPrimaryKey()); break; case 'left': $this->leftJoin($modelA->getAlias(), $modelB->getTable(), $modelB->getAlias(), $modelA->getAlias() . '.' . $modelB->getOwnExternalForeignKey() . ' = ' . $modelB->getAlias() . '.' . $modelB->getPrimaryKey()); break; case 'right': break; } $modelB->autoJoin($this); return $this; }