Пример #1
0
 /**
  * Adds all the joins to the statement
  * @param array $joins Array with ModelJoin objects
  * @return null
  */
 private function addJoins(array $joins)
 {
     if ($this->localize) {
         $this->addLocalizeJoin();
     }
     foreach ($this->fieldJoins as $field) {
         $fieldName = $field->getName();
         if ($field->isLocalized()) {
             $table = $this->tables[self::ALIAS_SELF_LOCALIZED];
         } else {
             $table = $this->tables[self::ALIAS_SELF];
         }
         $relationTable = $this->meta->getRelationTable($fieldName);
         if ($field instanceof BelongsToField) {
             $this->addBelongsToJoin($table, $relationTable, $fieldName);
             continue;
         }
         $linkTable = $this->meta->getRelationLinkTable($fieldName);
         if (!$linkTable) {
             $this->addHasOneJoin($table, $relationTable, $fieldName);
             continue;
         }
         $this->addHasManyJoin($table, $relationTable, $linkTable, $fieldName);
     }
     foreach ($this->conditionJoins as $join) {
         $this->tables[self::ALIAS_SELF]->addJoin($join);
     }
     foreach ($joins as $join) {
         $this->tables[self::ALIAS_SELF]->addJoin($join);
     }
 }