Per un'entità cms / block, perché i dati subordinati vengono eliminati esplicitamente da cms_page_store?


8

cms/blockle entità hanno una tabella di join cms_block_store, i record in cui collegano un determinato blocco a uno o più negozi. Prima di CE 1.6, il modello di risorsa Mage_Cms_Model_Mysql4_Block(collegamento) non rimuoveva separatamente questi record prima che l'entità venisse eliminata, facendo affidamento sulla cascata per rimuoverli. A partire dalla 1.6.0.0, il modello di risorsa trasferito rimuove esplicitamente questi record in Mage_Cms_Model_Resource_Block::_beforeDelete(collegamento) prima che l'entità venga eliminata da 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);
}

C'è una ragione apparente per eseguire questa operazione in due query separate anziché fare affidamento sulla cascata come prima?


Il core team di Magento sta leggendo qui?
Alex,

Lo spero! Aspetterò un paio di giorni e eseguirò il ping di alcuni di essi se non otteniamo buone risposte qui.
benmarks

forse gli stagisti che hanno riformulato il codice hanno pensato che fosse una buona idea ... spostare alcune cose fuori dal database, mantenere la logica a livello di codice.
FlorinelChis,

così tempo di ping loro :-)
Alex

2
@Alex - Sarò in giro con loro a Los Angeles questo fine settimana e aggiornerò qui.
Benmark

Risposte:


3

Per me questo molto probabilmente ha a che fare con lo scambio con un sistema di gestione di database relazionali (RDBMS). Affidarsi alla funzionalità a cascata del database potrebbe essere problematico in diversi sistemi, quindi la logica è stata aggiunta manualmente nel nuovo modello di risorsa.

Lo stesso può essere visto nel Mage_Cms_Model_Resource_Page::_beforeDelete()metodo e anche nei modelli Mage_Polle Mage_Review(anche se questi si verificano nei _afterSave()metodi.

Maggiori informazioni sullo scambio di Magento su RDBMS qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.