Para una entidad cms / block, ¿por qué se eliminan explícitamente los datos subordinados de cms_page_store?


8

cms/blockLas 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?


¿El equipo central de Magento está leyendo aquí?
Alex

¡Yo esperaria! Esperaré un par de días y haré ping a algunos de ellos si no recibimos buenas respuestas aquí.
puntos de referencia

tal vez los pasantes que refactorizaron el código pensaron que era una buena idea ... sacar algunas cosas de la base de datos, mantener la lógica en el nivel del código.
FlorinelChis

así que es hora de hacerles ping :-)
Alex

2
@Alex - Saldré con ellos en Los Ángeles este fin de semana y actualizaré aquí.
puntos de referencia

Respuestas:


3

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 modelos Mage_Polly Mage_Reviewtambién (aunque esto ocurre en los _afterSave()métodos.

Lea más sobre el intercambio de Magento a RDBMS aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.