コード例 #1
0
 private function reverseEngineerMappingFromDatabase()
 {
     if ($this->tables !== null) {
         return;
     }
     $tables = array();
     foreach ($this->_sm->listTableNames() as $tableName) {
         $tables[$tableName] = $this->_sm->listTableDetails($tableName);
     }
     $this->tables = $this->manyToManyTables = $this->classToTableNames = array();
     foreach ($tables as $tableName => $table) {
         /* @var $table \Doctrine\DBAL\Schema\Table */
         if ($this->_sm->getDatabasePlatform()->supportsForeignKeyConstraints()) {
             $foreignKeys = $table->getForeignKeys();
         } else {
             $foreignKeys = array();
         }
         $allForeignKeyColumns = array();
         foreach ($foreignKeys as $foreignKey) {
             $allForeignKeyColumns = array_merge($allForeignKeyColumns, $foreignKey->getLocalColumns());
         }
         //trecho alterado apenas para o gerador
         if ($table->getPrimaryKey()) {
             $pkColumns = $table->getPrimaryKey()->getColumns();
         } else {
             $pkColumns = array();
         }
         sort($pkColumns);
         sort($allForeignKeyColumns);
         if ($pkColumns == $allForeignKeyColumns && count($foreignKeys) == 2) {
             $this->manyToManyTables[$tableName] = $table;
         } else {
             // lower-casing is necessary because of Oracle Uppercase Tablenames,
             // assumption is lower-case + underscore separated.
             $className = $this->getClassNameForTable($tableName);
             $this->tables[$tableName] = $table;
             $this->classToTableNames[$className] = $tableName;
         }
     }
 }