/** * Retrieve table foreign keys definition array for create table * * @param Varien_Db_Ddl_Table $table * @return array */ protected function _getForeignKeysDefinition(Varien_Db_Ddl_Table $table) { $definition = array(); $relations = $table->getForeignKeys(); if (!empty($relations)) { foreach ($relations as $fkData) { $onDelete = $this->_getDdlAction($fkData['ON_DELETE']); $onUpdate = $this->_getDdlAction($fkData['ON_UPDATE']); $definition[] = sprintf(' CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s) ON DELETE %s ON UPDATE %s', $this->quoteIdentifier($fkData['FK_NAME']), $this->quoteIdentifier($fkData['COLUMN_NAME']), $this->quoteIdentifier($fkData['REF_TABLE_NAME']), $this->quoteIdentifier($fkData['REF_COLUMN_NAME']), $onDelete, $onUpdate); } } return $definition; }
/** * Retrieve table foreign keys definition array for create table * * @param Varien_Db_Ddl_Table $table * @return array */ protected function _getForeignKeysDefinition(Varien_Db_Ddl_Table $table) { $definition = array(); $relations = $table->getForeignKeys(); if (!empty($relations)) { foreach ($relations as $fkData) { switch ($fkData['ON_DELETE']) { case Varien_Db_Ddl_Table::ACTION_CASCADE: case Varien_Db_Ddl_Table::ACTION_RESTRICT: case Varien_Db_Ddl_Table::ACTION_SET_NULL: $onDelete = $fkData['ON_DELETE']; break; default: $onDelete = Varien_Db_Ddl_Table::ACTION_NO_ACTION; } switch ($fkData['ON_UPDATE']) { case Varien_Db_Ddl_Table::ACTION_CASCADE: case Varien_Db_Ddl_Table::ACTION_RESTRICT: case Varien_Db_Ddl_Table::ACTION_SET_NULL: $onUpdate = $fkData['ON_UPDATE']; break; default: $onUpdate = Varien_Db_Ddl_Table::ACTION_NO_ACTION; } $definition[] = sprintf(' CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s) ON DELETE %s ON UPDATE %s', $this->quoteIdentifier($fkData['FK_NAME']), $this->quoteIdentifier($fkData['COLUMN_NAME']), $this->quoteIdentifier($fkData['REF_TABLE_NAME']), $this->quoteIdentifier($fkData['REF_COLUMN_NAME']), $onDelete, $onUpdate); } } return $definition; }