Đối với thực thể cms / khối, tại sao dữ liệu cấp dưới bị xóa khỏi cms_page_store một cách rõ ràng?


8

cms/blockcác thực thể có một bảng tham gia cms_block_store, các bản ghi trong đó liên kết một khối nhất định với một hoặc nhiều cửa hàng. Trước CE 1.6, mô hình tài nguyên Mage_Cms_Model_Mysql4_Block(liên kết) không loại bỏ riêng các bản ghi này trước khi thực thể bị xóa, dựa vào tầng một cách hiệu quả để loại bỏ chúng. Kể từ 1.6.0.0, mô hình tài nguyên được di dời sẽ loại bỏ rõ ràng các bản ghi này trong Mage_Cms_Model_Resource_Block::_beforeDelete(liên kết) trước khi thực thể bị xóa khỏi 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ó một lý do rõ ràng để thực hiện thao tác này trong hai truy vấn riêng biệt thay vì dựa vào tầng như trước đây?


Có phải nhóm nòng cốt Magento đang đọc ở đây?
Alex

Tôi sẽ hy vọng như vậy! Tôi sẽ đợi một vài ngày và ping một vài trong số chúng nếu chúng tôi không nhận được câu trả lời hay nào ở đây.
đánh dấu

có lẽ các thực tập viên đã tái cấu trúc mã nghĩ rằng đây là một ý tưởng tốt ... di chuyển một số thứ ra khỏi cơ sở dữ liệu, giữ logic ở mức mã.
FlorinelChis

vì vậy thời gian để ping chúng :-)
Alex

2
@Alex - Tôi sẽ đi chơi với họ ở LA vào cuối tuần này và sẽ cập nhật tại đây.
đánh dấu

Câu trả lời:


3

Đối với tôi điều này rất có thể phải làm với việc hoán đổi sang một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). Dựa vào chức năng xếp tầng cơ sở dữ liệu có thể có vấn đề trong các hệ thống khác nhau, do đó logic đã được thêm thủ công trong mô hình Tài nguyên mới.

Điều tương tự có thể được nhìn thấy trong Mage_Cms_Model_Resource_Page::_beforeDelete()phương thức Mage_PollMage_Reviewmô hình cũng vậy (mặc dù những điều này xảy ra trong các _afterSave()phương thức.

Đọc thêm về hoán đổi của Magento sang RDBMS tại đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.