cms/block
у сущностей есть таблица соединений cms_block_store
, записи в которой связывают данный блок с одним или несколькими хранилищами. До CE 1.6 модель ресурсов Mage_Cms_Model_Mysql4_Block
(ссылка) отдельно не удаляла эти записи перед удалением объекта, фактически полагаясь на каскад для их удаления. Начиная с 1.6.0.0, модель перемещенных ресурсов явно удаляет эти записи в Mage_Cms_Model_Resource_Block::_beforeDelete
(ссылка) перед удалением объекта из 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);
}
Есть ли очевидная причина для выполнения этой операции в двух отдельных запросах вместо того, чтобы полагаться на каскад, как это было раньше?
Ответы:
Для меня это, скорее всего, связано со свопом к системе управления реляционными базами данных (RDBMS). Полагаться на функциональность каскадирования базы данных может быть проблематично в разных системах, поэтому логика была добавлена вручную в новой модели ресурсов.
То же самое можно увидеть в
Mage_Cms_Model_Resource_Page::_beforeDelete()
методе аMage_Poll
иMage_Review
модели слишком (хотя они имеют место в_afterSave()
методах.Узнайте больше о свопе Magento к RDBMS здесь
источник