Exemplo n.º 1
0
 protected function buildAssociativeRelationSql(Doctrine_Relation $relation, $assocAlias, $foreignAlias, $localAlias)
 {
     $table = $relation->getTable();
     $queryPart = ' ON ';
     if ($relation->isEqual()) {
         $queryPart .= '(';
     }
     $localIdentifier = $table->getColumnName($table->getIdentifier());
     $queryPart .= $this->_conn->quoteIdentifier($foreignAlias . '.' . $localIdentifier) . ' = ' . $this->_conn->quoteIdentifier($assocAlias . '.' . $relation->getForeign());
     if ($relation->isEqual()) {
         $queryPart .= ' OR ' . $this->_conn->quoteIdentifier($foreignAlias . '.' . $localIdentifier) . ' = ' . $this->_conn->quoteIdentifier($assocAlias . '.' . $relation->getLocal()) . ') AND ' . $this->_conn->quoteIdentifier($foreignAlias . '.' . $localIdentifier) . ' != ' . $this->_conn->quoteIdentifier($localAlias . '.' . $localIdentifier);
     }
     return $queryPart;
 }
Exemplo n.º 2
0
 /**
  * setReference
  * sets a reference pointer
  *
  * @return void
  */
 public function setReference(Doctrine_Record $record, Doctrine_Relation $relation)
 {
     $this->reference = $record;
     $this->relation = $relation;
     if ($relation instanceof Doctrine_Relation_ForeignKey || $relation instanceof Doctrine_Relation_LocalKey) {
         $this->referenceField = $relation->getForeign();
         $value = $record->get($relation->getLocal());
         foreach ($this->data as $record) {
             if ($value !== null) {
                 $record->set($this->referenceField, $value, false);
             } else {
                 $record->set($this->referenceField, $this->reference, false);
             }
         }
     } elseif ($relation instanceof Doctrine_Relation_Association) {
     }
 }