cms/block
As entidades têm uma tabela de junção cms_block_store
, os registros nos quais vinculam um determinado bloco a uma ou mais lojas. Antes do CE 1.6, o modelo de recurso Mage_Cms_Model_Mysql4_Block
(link) não remove esses registros separadamente antes que a entidade seja excluída, contando com a cascata para removê-los. A partir de 1.6.0.0, o modelo de recursos realocado remove explicitamente esses registros em Mage_Cms_Model_Resource_Block::_beforeDelete
(link) antes que a entidade seja excluída 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 uma razão aparente para executar essa operação em duas consultas separadas, em vez de confiar na cascata como antes?
Respostas:
Para mim, isso provavelmente tem a ver com a troca para um sistema de gerenciamento de banco de dados relacional (RDBMS). Confiar na funcionalidade de cascata do banco de dados pode ser problemático em diferentes sistemas, portanto, a lógica foi adicionada manualmente no novo modelo de Recursos.
O mesmo pode ser visto no
Mage_Cms_Model_Resource_Page::_beforeDelete()
método e nos modelosMage_Poll
eMage_Review
também (embora eles ocorram nos_afterSave()
métodos.Leia mais sobre a troca do Magento para RDBMS aqui
fonte