cms/block
Las entidades tienen una tabla de unión cms_block_store
, los registros en los que se vincula un bloque determinado a una o más tiendas. Antes de CE 1.6, el modelo de recursos Mage_Cms_Model_Mysql4_Block
(enlace) no elimina por separado estos registros antes de que se elimine la entidad, confiando efectivamente en la cascada para eliminarlos. A partir de 1.6.0.0, el modelo de recurso reubicado elimina explícitamente estos registros en Mage_Cms_Model_Resource_Block::_beforeDelete
(enlace) antes de que la entidad se elimine de cms_block
:
protected function _beforeDelete(Mage_Core_Model_Abstract $object)
{
$condition = array(
'block_id = ?' => (int) $object->getId(),
);
$this->_getWriteAdapter()->delete($this->getTable('cms/block_store'), $condition);
return parent::_beforeDelete($object);
}
¿Existe una razón aparente para realizar esta operación en dos consultas separadas en lugar de confiar en la cascada como lo hizo antes?
Respuestas:
Para mí, esto probablemente tiene que ver con el cambio a un sistema de gestión de bases de datos relacionales (RDBMS). Confiar en la funcionalidad en cascada de la base de datos podría ser problemático en diferentes sistemas, por lo que la lógica se ha agregado manualmente en el nuevo modelo de Recursos.
Lo mismo se puede ver en el
Mage_Cms_Model_Resource_Page::_beforeDelete()
método y los modelosMage_Poll
yMage_Review
también (aunque esto ocurre en los_afterSave()
métodos.Lea más sobre el intercambio de Magento a RDBMS aquí
fuente