/** * Before returning the exportable-version of this table, unset any foreign * keys that had the option "export => false". * * @param bool $parseForeignKeys * @return array */ public function getExportableFormat($parseForeignKeys = true) { $data = parent::getExportableFormat($parseForeignKeys); // unset any fk's that we shouldn't export foreach ($this->no_export as $rel_alias) { $key_name = $this->getRelation($rel_alias)->getForeignKeyName(); unset($data['options']['foreignKeys'][$key_name]); } return $data; }
/** * exportTable * exports given table into database based on column and option definitions * * @throws Doctrine_Connection_Exception if some error other than Doctrine_Core::ERR_ALREADY_EXISTS * occurred during the create table operation * @return boolean whether or not the export operation was successful * false if table already existed in the database */ public function exportTable(Doctrine_Table $table) { try { $data = $table->getExportableFormat(); $this->conn->export->createTable($data['tableName'], $data['columns'], $data['options']); } catch (Doctrine_Connection_Exception $e) { // we only want to silence table already exists errors if ($e->getPortableCode() !== Doctrine_Core::ERR_ALREADY_EXISTS) { throw $e; } } }
/** * exportTable * exports given table into database based on column and option definitions * * @throws Doctrine_Connection_Exception if some error other than Doctrine::ERR_ALREADY_EXISTS * occurred during the create table operation * @return boolean whether or not the export operation was successful * false if table already existed in the database */ public function exportTable(Doctrine_Table $table) { /** TODO: maybe there should be portability option for the following check if ( ! Doctrine::isValidClassname($table->getOption('declaringClass')->getName())) { throw new Doctrine_Export_Exception('Class name not valid.'); } */ try { $data = $table->getExportableFormat(); $this->conn->export->createTable($data['tableName'], $data['columns'], $data['options']); } catch (Doctrine_Connection_Exception $e) { // we only want to silence table already exists errors if ($e->getPortableCode() !== Doctrine::ERR_ALREADY_EXISTS) { throw $e; } } }