Para uma entidade cms / block, por que os dados subordinados são excluídos de cms_page_store explicitamente?


8

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


A equipe principal do Magento está lendo aqui?
11283 Alex

Eu espero que sim! Vou esperar alguns dias e executar ping alguns deles, se não conseguirmos boas respostas aqui.
benmarks

talvez os estagiários que refatoraram o código pensassem que era uma boa idéia ... mover algumas coisas para fora do banco de dados, manter a lógica no nível do código.
FlorinelChis

assim que o tempo de ping-los :-)
Alex

2
@ Alex - eu vou sair com eles em LA neste fim de semana e vou atualizar aqui.
precisa saber é

Respostas:


3

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 modelos Mage_Polle Mage_Reviewtambém (embora eles ocorram nos _afterSave()métodos.

Leia mais sobre a troca do Magento para RDBMS aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.