예제 #1
0
파일: QuerySet.php 프로젝트: Edke/PerfORM
 /**
  * Adds joins recursively from model's definition if relation to other models exists
  * @param PerfORM $model
  */
 protected function addJoins($model, $inner = true)
 {
     if ($model->isExtended()) {
         $this->joins[] = sprintf("\tINNER JOIN \"%s\" AS \"%s\" ON \"%s\".\"%s\" = \"%s\".\"%s\"", $model->getExtend()->getTableName(), $model->getExtend()->getAlias(), $model->getExtend()->getAlias(), $model->getExtend()->getPrimaryKey(), $model->getAlias(), $model->getField($model->getPrimaryKey())->getRealName());
     }
     foreach ($model->getFields() as $field) {
         if ($field->getIdent() == PerfORM::ForeignKeyField && !$field->isEnabledLazyLoading()) {
             $join_type = !$field->isNullable() && $inner ? 'INNER' : 'LEFT';
             $this->joins[] = sprintf("\t%s JOIN \"%s\" AS \"%s\" ON \"%s\".\"%s\" = \"%s\".\"%s\"", $join_type, $field->getReference()->getTableName(), $field->getReference()->getAlias(), $field->getReference()->getAlias(), $field->getReference()->getPrimaryKey(), $model->getAlias(), $field->getRealName());
             $this->addJoins($field->getReference(), $join_type == 'INNER');
         }
     }
 }