/** * Process DB schema * * @param array $schema Schema * @param string $type Schema type * * @return array */ public function processSchema(array $schema, $type) { $schema = parent::processSchema($schema, $type); if (\XLite\Core\Database::SCHEMA_CREATE == $type) { $schema[] = 'ALTER TABLE `' . $this->getClassMetadata()->getTableName() . '`' . ' ADD CONSTRAINT `session_cell_to_session` FOREIGN KEY `id` (`id`)' . ' REFERENCES `' . $this->_em->getClassMetadata('XLite\\Model\\Session')->getTableName() . '` (`id`)' . ' ON DELETE CASCADE ON UPDATE CASCADE'; } elseif (\XLite\Core\Database::SCHEMA_UPDATE == $type) { $schema = preg_grep('/DROP FOREIGN KEY `?session_cell_to_session`?/Ss', $schema, PREG_GREP_INVERT); } return $schema; }