Browse files

Change fallback order in getTableByPhpName(). Fixes #385

  • Loading branch information...
1 parent 62f0f79 commit 73134d5115ba68a9e0e5f07ac1f6f5eba666b815 @willdurand willdurand committed Dec 29, 2012
Showing with 159 additions and 160 deletions.
  1. +159 −160 runtime/lib/map/DatabaseMap.php
View
319 runtime/lib/map/DatabaseMap.php
@@ -26,169 +26,168 @@
*/
class DatabaseMap
{
+ /** @var string Name of the database. */
+ protected $name;
+
+ /** @var array TableMap[] Tables in the database, using table name as key */
+ protected $tables = array();
+
+ /** @var array TableMap[] Tables in the database, using table phpName as key */
+ protected $tablesByPhpName = array();
+
+ /**
+ * Constructor.
+ *
+ * @param string $name Name of the database.
+ */
+ public function __construct($name)
+ {
+ $this->name = $name;
+ }
+
+ /**
+ * Get the name of this database.
+ *
+ * @return string The name of the database.
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Add a new table to the database by name.
+ *
+ * @param string $tableName The name of the table.
+ * @return TableMap The newly created TableMap.
+ */
+ public function addTable($tableName)
@staabm
Propel member
staabm added a note Dec 31, 2012

Shouldn't this method call addTableObject()? Atm it does not fill the tablesByPhpName Array,...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
+ {
+ $this->tables[$tableName] = new TableMap($tableName, $this);
+
+ return $this->tables[$tableName];
+ }
+
+ /**
+ * Add a new table object to the database.
+ *
+ * @param TableMap $table The table to add
+ */
+ public function addTableObject(TableMap $table)
+ {
+ $table->setDatabaseMap($this);
+ $this->tables[$table->getName()] = $table;
+ $this->tablesByPhpName[$table->getClassname()] = $table;
+ }
+
+ /**
+ * Add a new table to the database, using the tablemap class name.
+ *
+ * @param string $tableMapClass The name of the table map to add
+ * @return TableMap The TableMap object
+ */
+ public function addTableFromMapClass($tableMapClass)
+ {
+ $table = new $tableMapClass();
+ if (!$this->hasTable($table->getName())) {
+ $this->addTableObject($table);
+
+ return $table;
+ } else {
+ return $this->getTable($table->getName());
+ }
+ }
- /** @var string Name of the database. */
- protected $name;
-
- /** @var array TableMap[] Tables in the database, using table name as key */
- protected $tables = array();
-
- /** @var array TableMap[] Tables in the database, using table phpName as key */
- protected $tablesByPhpName = array();
-
- /**
- * Constructor.
- *
- * @param string $name Name of the database.
- */
- public function __construct($name)
- {
- $this->name = $name;
- }
-
- /**
- * Get the name of this database.
- *
- * @return string The name of the database.
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Add a new table to the database by name.
- *
- * @param string $tableName The name of the table.
- * @return TableMap The newly created TableMap.
- */
- public function addTable($tableName)
- {
- $this->tables[$tableName] = new TableMap($tableName, $this);
-
- return $this->tables[$tableName];
- }
-
- /**
- * Add a new table object to the database.
- *
- * @param TableMap $table The table to add
- */
- public function addTableObject(TableMap $table)
- {
- $table->setDatabaseMap($this);
- $this->tables[$table->getName()] = $table;
- $this->tablesByPhpName[$table->getClassname()] = $table;
- }
-
- /**
- * Add a new table to the database, using the tablemap class name.
- *
- * @param string $tableMapClass The name of the table map to add
- * @return TableMap The TableMap object
- */
- public function addTableFromMapClass($tableMapClass)
- {
- $table = new $tableMapClass();
- if (!$this->hasTable($table->getName())) {
- $this->addTableObject($table);
-
- return $table;
- } else {
- return $this->getTable($table->getName());
+ /**
+ * Does this database contain this specific table?
+ *
+ * @param string $name The String representation of the table.
+ * @return boolean True if the database contains the table.
+ */
+ public function hasTable($name)
+ {
+ return array_key_exists($name, $this->tables);
}
- }
-
- /**
- * Does this database contain this specific table?
- *
- * @param string $name The String representation of the table.
- * @return boolean True if the database contains the table.
- */
- public function hasTable($name)
- {
- return array_key_exists($name, $this->tables);
- }
-
- /**
- * Get a TableMap for the table by name.
- *
- * @param string $name Name of the table.
- * @return TableMap A TableMap
- * @throws PropelException if the table is undefined
- */
- public function getTable($name)
- {
- if (!isset($this->tables[$name])) {
- throw new PropelException("Cannot fetch TableMap for undefined table: " . $name );
+
+ /**
+ * Get a TableMap for the table by name.
+ *
+ * @param string $name Name of the table.
+ * @return TableMap A TableMap
+ * @throws PropelException if the table is undefined
+ */
+ public function getTable($name)
+ {
+ if (!isset($this->tables[$name])) {
+ throw new PropelException("Cannot fetch TableMap for undefined table: " . $name );
+ }
+
+ return $this->tables[$name];
+ }
+
+ /**
+ * Get a TableMap[] of all of the tables in the database.
+ *
+ * @return array A TableMap[].
+ */
+ public function getTables()
+ {
+ return $this->tables;
+ }
+
+ /**
+ * Get a ColumnMap for the column by name.
+ * Name must be fully qualified, e.g. book.AUTHOR_ID
+ *
+ * @param $qualifiedColumnName Name of the column.
+ * @return ColumnMap A TableMap
+ * @throws PropelException if the table is undefined, or if the table is undefined
+ */
+ public function getColumn($qualifiedColumnName)
+ {
+ list($tableName, $columnName) = explode('.', $qualifiedColumnName);
+
+ return $this->getTable($tableName)->getColumn($columnName, false);
+ }
+
+ // deprecated methods
+
+ /**
+ * Does this database contain this specific table?
+ *
+ * @deprecated Use hasTable() instead
+ * @param string $name The String representation of the table.
+ * @return boolean True if the database contains the table.
+ */
+ public function containsTable($name)
+ {
+ return $this->hasTable($name);
+ }
+
+ public function getTableByPhpName($phpName)
+ {
+ if (array_key_exists($phpName, $this->tablesByPhpName)) {
+ return $this->tablesByPhpName[$phpName];
+ } elseif (class_exists($tmClass = substr_replace($phpName, '\\map\\', strrpos($phpName, '\\'), 1) . 'TableMap')) {
+ $this->addTableFromMapClass($tmClass);
+
+ return $this->tablesByPhpName[$phpName];
+ } elseif (class_exists($tmClass = $phpName . 'TableMap')) {
+ $this->addTableFromMapClass($tmClass);
+
+ return $this->tablesByPhpName[$phpName];
+ } else {
+ throw new PropelException("Cannot fetch TableMap for undefined table phpName: " . $phpName);
+ }
}
- return $this->tables[$name];
- }
-
- /**
- * Get a TableMap[] of all of the tables in the database.
- *
- * @return array A TableMap[].
- */
- public function getTables()
- {
- return $this->tables;
- }
-
- /**
- * Get a ColumnMap for the column by name.
- * Name must be fully qualified, e.g. book.AUTHOR_ID
- *
- * @param $qualifiedColumnName Name of the column.
- * @return ColumnMap A TableMap
- * @throws PropelException if the table is undefined, or if the table is undefined
- */
- public function getColumn($qualifiedColumnName)
- {
- list($tableName, $columnName) = explode('.', $qualifiedColumnName);
-
- return $this->getTable($tableName)->getColumn($columnName, false);
- }
-
- // deprecated methods
-
- /**
- * Does this database contain this specific table?
- *
- * @deprecated Use hasTable() instead
- * @param string $name The String representation of the table.
- * @return boolean True if the database contains the table.
- */
- public function containsTable($name)
- {
- return $this->hasTable($name);
- }
-
- public function getTableByPhpName($phpName)
- {
- if (array_key_exists($phpName, $this->tablesByPhpName)) {
- return $this->tablesByPhpName[$phpName];
- } elseif (class_exists($tmClass = $phpName . 'TableMap')) {
- $this->addTableFromMapClass($tmClass);
-
- return $this->tablesByPhpName[$phpName];
- } elseif (class_exists($tmClass = substr_replace($phpName, '\\map\\', strrpos($phpName, '\\'), 1) . 'TableMap')) {
- $this->addTableFromMapClass($tmClass);
-
- return $this->tablesByPhpName[$phpName];
- } else {
- throw new PropelException("Cannot fetch TableMap for undefined table phpName: " . $phpName);
+ /**
+ * Convenience method to get the DBAdapter registered with Propel for this database.
+ * @return DBAdapter
+ * @see Propel::getDB(string)
+ */
+ public function getDBAdapter()
+ {
+ return Propel::getDB($this->name);
}
- }
-
- /**
- * Convenience method to get the DBAdapter registered with Propel for this database.
- * @return DBAdapter
- * @see Propel::getDB(string)
- */
- public function getDBAdapter()
- {
- return Propel::getDB($this->name);
- }
}

0 comments on commit 73134d5

Please sign in to comment.