Ok, vì vậy tôi đã không có nhiều phản hồi từ việc này nên bắt đầu tự mình tìm hiểu để có thể trả lời một nửa câu hỏi tôi đã hỏi.
Đã thực hiện một "grep" đơn giản và tình cờ thấy lớp sau được giấu trong thư mục lib: lib/Magento/Db/Sql/Trigger.php
Nó khá đơn giản và đây là những gì tôi đã làm với nó hoạt động (có thể được đặt trong tập lệnh cài đặt / nâng cấp của bạn):
<?php
/** @var $installer Mage_Core_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();
// Trigger
$trigger = new Magento_Db_Sql_Trigger();
// Set time SQL_TIME_BEFORE / SQL_TIME_AFTER
$trigger->setTime($trigger::SQL_TIME_BEFORE);
// Set time SQL_EVENT_INSERT / SQL_EVENT_UPDATE / SQL_EVENT_DELETE
$trigger->setEvent($trigger::SQL_EVENT_INSERT);
// Set target table name
$trigger->setTarget($installer->getTable('fontera_trader/leaderboards_global_tmp'));
// Set Body
$trigger->setBody(
'INSERT INTO '.$installer->getTable('fontera_trader/leaderboards_global').'
(entity_id, customer_id , credit_value, prize_value, games_played, rank, prev_rank)
VALUES
(NEW.entity_id, NEW.customer_id, NEW.credit_value, NEW.prize_value, NEW.games_played, NEW.rank, NEW.prev_rank)
ON DUPLICATE KEY UPDATE
customer_id = NEW.customer_id,
credit_value = NEW.credit_value,
prize_value = NEW.prize_value,
games_played = NEW.games_played,
rank = NEW.rank,
prev_rank = NEW.prev_rank;
SET @r = 0;
UPDATE '.$installer->getTable('fontera_trader/leaderboards_global').'
SET
prev_rank = rank,
rank = @r:= (@r+1)
ORDER BY
credit_value
DESC;
'
);
// Assemble query, returns direct SQL for trigger
$triggerCreateQuery = $trigger->assemble();
// Adapter initiates query
$this->getConnection()->query($triggerCreateQuery);
$installer->endSetup();
Tôi đã thêm ý kiến để đưa ra một ý tưởng cơ bản về những gì có thể được sử dụng, tốt nhất hãy tự mình kiểm tra lớp. Phần thân về cơ bản là SQL thô nhưng có thể được biên dịch bằng các phương thức thông thường của Magento. Tôi đã sử dụng SQL thô cho mục đích trình diễn.
Dù vậy, tôi vẫn đang cố gắng tìm cách thực hiện THỦ TỤC LƯU TRỮ mà không thành công. Có ai gặp phải bất cứ điều gì như thế này trong Magento có thể được giấu để sử dụng trong tương lai?
.sql
tệp phiên bản với quy trình được lưu trữ của bạn. Thêm chi tiết: alanstorm.com/magento_setup_resource