Для сущности cms / block, почему подчиненные данные явно удаляются из cms_page_store?


8

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);
}

Есть ли очевидная причина для выполнения этой операции в двух отдельных запросах вместо того, чтобы полагаться на каскад, как это было раньше?


Основная команда Magento читает здесь?
— Alex

Я надеюсь на это! Я подожду пару дней и пингую некоторые из них, если мы не получим здесь хороших ответов.
— отметки

возможно, стажеры, которые реорганизовали код, думали, что это хорошая идея ... убрать некоторые вещи из базы данных, сохранить логику на уровне кода.
— FlorinelChis

так что время пинговать их :-)
— Алекс

2
@ Алекс - я буду болтаться с ними в Лос-Анджелесе в эти выходные и буду обновлять здесь.
— отметки

Ответы:


3

Для меня это, скорее всего, связано со свопом к системе управления реляционными базами данных (RDBMS). Полагаться на функциональность каскадирования базы данных может быть проблематично в разных системах, поэтому логика была добавлена ​​вручную в новой модели ресурсов.

То же самое можно увидеть в Mage_Cms_Model_Resource_Page::_beforeDelete()методе а Mage_Pollи Mage_Reviewмодели слишком (хотя они имеют место в _afterSave()методах.

Узнайте больше о свопе Magento к RDBMS здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.