getReferences() public méthode

get all related components
public getReferences ( ) : array
Résultat array various Doctrine_Collection or Doctrine_Record instances
Exemple #1
0
 /**
  * Dumps a record.
  *
  * This method returns an html representation of a given
  * record, containing keys, state and data.
  *
  * @param Doctrine_Record $record
  * @return string
  */
 public static function getRecordAsString(Doctrine_Record $record)
 {
     $r[] = '<pre>';
     $r[] = 'Component  : ' . $record->getTable()->getComponentName();
     $r[] = 'ID         : ' . Doctrine::dump($record->identifier());
     $r[] = 'References : ' . count($record->getReferences());
     $r[] = 'State      : ' . Doctrine_Lib::getRecordStateAsString($record->state());
     $r[] = 'OID        : ' . $record->getOID();
     $r[] = 'data       : ' . Doctrine::dump($record->getData(), false);
     $r[] = '</pre>';
     return implode("\n", $r) . "<br />";
 }
Exemple #2
0
 /**
  * saveAssociations
  *
  * this method takes a diff of one-to-many / many-to-many original and
  * current collections and applies the changes
  *
  * for example if original many-to-many related collection has records with
  * primary keys 1,2 and 3 and the new collection has records with primary keys
  * 3, 4 and 5, this method would first destroy the associations to 1 and 2 and then
  * save new associations to 4 and 5
  *
  * @throws Doctrine_Connection_Exception         if something went wrong at database level
  * @param Doctrine_Record $record
  * @return void
  */
 public function saveAssociations(Doctrine_Record $record)
 {
     foreach ($record->getReferences() as $k => $v) {
         $rel = $record->getTable()->getRelation($k);
         if ($rel instanceof Doctrine_Relation_Association) {
             if ($this->conn->getAttribute(Doctrine_Core::ATTR_CASCADE_SAVES) || $v->isModified()) {
                 $v->save($this->conn, false);
             }
             $assocTable = $rel->getAssociationTable();
             foreach ($v->getDeleteDiff() as $r) {
                 $query = 'DELETE FROM ' . $assocTable->getTableName() . ' WHERE ' . $rel->getForeignRefColumnName() . ' = ?' . ' AND ' . $rel->getLocalRefColumnName() . ' = ?';
                 $this->conn->execute($query, array($r->getIncremented(), $record->getIncremented()));
             }
             foreach ($v->getInsertDiff() as $r) {
                 $assocRecord = $assocTable->create();
                 $assocRecord->set($assocTable->getFieldName($rel->getForeign()), $r);
                 $assocRecord->set($assocTable->getFieldName($rel->getLocal()), $record);
                 $this->saveGraph($assocRecord);
             }
             // take snapshot of collection state, so that we know when its modified again
             $v->takeSnapshot();
         }
     }
 }
 /**
  * saveAssociations
  *
  * this method takes a diff of one-to-many / many-to-many original and
  * current collections and applies the changes
  *
  * for example if original many-to-many related collection has records with
  * primary keys 1,2 and 3 and the new collection has records with primary keys
  * 3, 4 and 5, this method would first destroy the associations to 1 and 2 and then
  * save new associations to 4 and 5
  *
  * @throws PDOException         if something went wrong at database level
  * @param Doctrine_Record $record
  * @return void
  */
 public function saveAssociations(Doctrine_Record $record)
 {
     foreach ($record->getReferences() as $k => $v) {
         $rel = $record->getTable()->getRelation($k);
         if ($rel instanceof Doctrine_Relation_Association) {
             $v->save($this->conn);
             $assocTable = $rel->getAssociationTable();
             foreach ($v->getDeleteDiff() as $r) {
                 $query = 'DELETE FROM ' . $assocTable->getTableName() . ' WHERE ' . $rel->getForeign() . ' = ?' . ' AND ' . $rel->getLocal() . ' = ?';
                 $this->conn->execute($query, array($r->getIncremented(), $record->getIncremented()));
             }
             foreach ($v->getInsertDiff() as $r) {
                 $assocRecord = $assocTable->create();
                 $assocRecord->set($rel->getForeign(), $r);
                 $assocRecord->set($rel->getLocal(), $record);
                 $assocRecord->save($this->conn);
             }
         }
     }
 }