cms/block
entitas memiliki tabel gabungan cms_block_store
, catatan yang menautkan blok yang diberikan ke satu atau lebih toko. Sebelum CE 1.6, model sumber daya Mage_Cms_Model_Mysql4_Block
(tautan) tidak secara terpisah menghapus catatan-catatan ini sebelum entitas dihapus, secara efektif mengandalkan kaskade untuk menghapusnya. Pada 1.6.0.0, model sumber daya yang dipindahkan secara eksplisit menghapus catatan ini di Mage_Cms_Model_Resource_Block::_beforeDelete
(tautan) sebelum entitas dihapus dari 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);
}
Apakah ada alasan yang jelas untuk melakukan operasi ini dalam dua pertanyaan terpisah daripada mengandalkan kaskade seperti sebelumnya?
Jawaban:
Bagi saya ini kemungkinan besar berkaitan dengan swap ke sistem manajemen basis data relasional (RDBMS). Mengandalkan fungsionalitas cascading database bisa menjadi masalah di sistem yang berbeda, sehingga logika telah ditambahkan secara manual dalam model Resource baru.
Hal yang sama dapat dilihat dalam
Mage_Cms_Model_Resource_Page::_beforeDelete()
metodeMage_Poll
danMage_Review
model dan juga (meskipun ini terjadi dalam_afterSave()
metode.Baca lebih lanjut tentang pertukaran Magento ke RDBMS di sini
sumber