public function testColumnMappings()
 {
     $contestTable = $this->databaseMap->getTableByPhpName('Propel\\Tests\\BookstoreSchemas\\BookstoreContest');
     $del = $this->getPlatform()->getSchemaDelimiter();
     $this->assertEquals(array('contest' . $del . 'bookstore_contest.BOOKSTORE_ID' => 'bookstore_schemas' . $del . 'bookstore.ID'), $contestTable->getRelation('Bookstore')->getColumnMappings(), 'getColumnMappings returns local to foreign by default');
     $this->assertEquals(array('contest' . $del . 'bookstore_contest.BOOKSTORE_ID' => 'bookstore_schemas' . $del . 'bookstore.ID'), $contestTable->getRelation('Bookstore')->getColumnMappings(RelationMap::LEFT_TO_RIGHT), 'getColumnMappings returns local to foreign when asked left to right for a many to one relationship');
     $bookTable = $this->databaseMap->getTableByPhpName('Propel\\Tests\\BookstoreSchemas\\Bookstore');
     $this->assertEquals(array('contest' . $del . 'bookstore_contest.BOOKSTORE_ID' => 'bookstore_schemas' . $del . 'bookstore.ID'), $bookTable->getRelation('BookstoreContest')->getColumnMappings(), 'getColumnMappings returns local to foreign by default');
     $this->assertEquals(array('bookstore_schemas' . $del . 'bookstore.ID' => 'contest' . $del . 'bookstore_contest.BOOKSTORE_ID'), $bookTable->getRelation('BookstoreContest')->getColumnMappings(RelationMap::LEFT_TO_RIGHT), 'getColumnMappings returns foreign to local when asked left to right for a one to many relationship');
     $bookCustomerTable = $this->databaseMap->getTableByPhpName('Propel\\Tests\\BookstoreSchemas\\Customer');
     $this->assertEquals(array('bookstore_schemas' . $del . 'customer_account.CUSTOMER_ID' => 'bookstore_schemas' . $del . 'customer.ID'), $bookCustomerTable->getRelation('CustomerAccount')->getColumnMappings(), 'getColumnMappings returns local to foreign by default');
     $this->assertEquals(array('bookstore_schemas' . $del . 'customer.ID' => 'bookstore_schemas' . $del . 'customer_account.CUSTOMER_ID'), $bookCustomerTable->getRelation('CustomerAccount')->getColumnMappings(RelationMap::LEFT_TO_RIGHT), 'getColumnMappings returns foreign to local when asked left to right for a one to one relationship');
 }
Esempio n. 2
0
 /**
  * Adds a RelationMap to the table
  *
  * @param  string                          $name          The relation name
  * @param  string                          $tablePhpName  The related table name
  * @param  integer                         $type          The relation type (either RelationMap::MANY_TO_ONE, RelationMap::ONE_TO_MANY, or RelationMAp::ONE_TO_ONE)
  * @param  array                           $columnMapping An associative array mapping column names (local => foreign)
  * @param  string                          $onDelete      SQL behavior upon deletion ('SET NULL', 'CASCADE', ...)
  * @param  string                          $onUpdate      SQL behavior upon update ('SET NULL', 'CASCADE', ...)
  * @param  string                          $pluralName    Optional plural name for *_TO_MANY relationships
  * @return \Propel\Runtime\Map\RelationMap the built RelationMap object
  */
 public function addRelation($name, $tablePhpName, $type, $columnMapping = array(), $onDelete = null, $onUpdate = null, $pluralName = null)
 {
     // note: using phpName for the second table allows the use of DatabaseMap::getTableByPhpName()
     // and this method autoloads the TableMap if the table isn't loaded yet
     $relation = new RelationMap($name);
     $relation->setType($type);
     $relation->setOnUpdate($onUpdate);
     $relation->setOnDelete($onDelete);
     if (null !== $pluralName) {
         $relation->setPluralName($pluralName);
     }
     // set tables
     if (RelationMap::MANY_TO_ONE === $type) {
         $relation->setLocalTable($this);
         $relation->setForeignTable($this->dbMap->getTableByPhpName($tablePhpName));
     } else {
         $relation->setLocalTable($this->dbMap->getTableByPhpName($tablePhpName));
         $relation->setForeignTable($this);
         $columnMapping = array_flip($columnMapping);
     }
     // set columns
     foreach ($columnMapping as $local => $foreign) {
         $relation->addColumnMapping($relation->getLocalTable()->getColumn($local), $relation->getForeignTable()->getColumn($foreign));
     }
     $this->relations[$name] = $relation;
     return $relation;
 }
Esempio n. 3
0
 /**
  * Adds a RelationMap to the table
  *
  * @param  string                          $name          The relation name
  * @param  string                          $tablePhpName  The related table name
  * @param  integer                         $type          The relation type (either RelationMap::MANY_TO_ONE, RelationMap::ONE_TO_MANY, or RelationMAp::ONE_TO_ONE)
  * @param  array                           $joinConditionMapping Arrays in array defining a normalize join condition [[':foreign_id', ':id', '='], [':foreign_type', 'value', '=']]
  * @param  string                          $onDelete      SQL behavior upon deletion ('SET NULL', 'CASCADE', ...)
  * @param  string                          $onUpdate      SQL behavior upon update ('SET NULL', 'CASCADE', ...)
  * @param  string                          $pluralName    Optional plural name for *_TO_MANY relationships
  * @param  boolean                         $polymorphic    Optional plural name for *_TO_MANY relationships
  *
  * @return RelationMap the built RelationMap object
  */
 public function addRelation($name, $tablePhpName, $type, $joinConditionMapping = [], $onDelete = null, $onUpdate = null, $pluralName = null, $polymorphic = false)
 {
     // note: using phpName for the second table allows the use of DatabaseMap::getTableByPhpName()
     // and this method autoloads the TableMap if the table isn't loaded yet
     $relation = new RelationMap($name);
     $relation->setType($type);
     $relation->setOnUpdate($onUpdate);
     $relation->setOnDelete($onDelete);
     $relation->setPolymorphic($polymorphic);
     if (null !== $pluralName) {
         $relation->setPluralName($pluralName);
     }
     // set tables
     if (RelationMap::MANY_TO_ONE === $type) {
         $relation->setLocalTable($this);
         $relation->setForeignTable($this->dbMap->getTableByPhpName($tablePhpName));
     } else {
         $relation->setLocalTable($this->dbMap->getTableByPhpName($tablePhpName));
         $relation->setForeignTable($this);
     }
     // set columns
     foreach ($joinConditionMapping as $map) {
         list($local, $foreign) = $map;
         $relation->addColumnMapping($this->getColumnOrValue($local, $relation->getLocalTable()), $this->getColumnOrValue($foreign, $relation->getForeignTable()));
     }
     $this->relations[$name] = $relation;
     return $relation;
 }