Warum werden bei einer cms / block-Entität die untergeordneten Daten explizit aus cms_page_store gelöscht?


8

cms/blockEntitäten haben eine Verknüpfungstabelle cms_block_store, die Datensätze, in denen ein bestimmter Block mit einem oder mehreren Speichern verknüpft ist. Vor CE 1.6 entfernt das Ressourcenmodell Mage_Cms_Model_Mysql4_Block(Link) diese Datensätze nicht separat, bevor die Entität gelöscht wird, und verlässt sich effektiv auf die Kaskade, um sie zu entfernen. Ab 1.6.0.0 entfernt das verschobene Ressourcenmodell diese Datensätze explizit in Mage_Cms_Model_Resource_Block::_beforeDelete(Link), bevor die Entität gelöscht wird aus 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);
}

Gibt es einen offensichtlichen Grund, diesen Vorgang in zwei separaten Abfragen durchzuführen, anstatt sich wie zuvor auf die Kaskade zu verlassen?


Liest das Magento-Kernteam hier?
Alex

Das hoffe ich doch! Ich werde ein paar Tage warten und einige davon anpingen, wenn wir hier keine guten Antworten bekommen.
Benmarks

Vielleicht hielten die Praktikanten, die den Code überarbeitet haben, dies für eine gute Idee ... einige Dinge aus der Datenbank entfernen, die Logik auf Codeebene halten.
FlorinelChis

Alex

2
@Alex - Ich werde dieses Wochenende mit ihnen in LA rumhängen und hier aktualisieren.
Benmarks

Antworten:


3

Für mich hat dies höchstwahrscheinlich mit dem Wechsel zu einem relationalen Datenbankverwaltungssystem (RDBMS) zu tun. Das Verlassen auf die Datenbankkaskadierungsfunktionalität kann in verschiedenen Systemen problematisch sein. Daher wurde die Logik im neuen Ressourcenmodell manuell hinzugefügt.

Das Gleiche gilt für die Mage_Cms_Model_Resource_Page::_beforeDelete()Methode und die Modelle Mage_Pollund Mage_Review(obwohl diese in den _afterSave()Methoden vorkommen.

Lesen Sie hier mehr über den Wechsel von Magento zu RDBMS

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.