Вопрос

Установка и обновление скрипта часто бывает в них: эти вызовы:

$this->startSetup();

$this->endSetup();

Я знаю, что они не требуются, потому что я не использую их для нескольких таких сценариев. Может ли кто -нибудь объяснить их цель и если есть какое -либо значение для использования/не использования их?

Это было полезно?

Решение

Если вы загляните в Varien_Db_Adapter_Pdo_Mysql (Я попал туда, посмотрев Mage_Core_Model_Resource_Setup что делает getConnection()->startSetup()) вы увидите, что этот вызов выполняет некоторое подготовку к конкретной базе данных:

public function startSetup()
{
    $this->raw_query("SET SQL_MODE=''");
    $this->raw_query("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0");
    $this->raw_query("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'");
    return $this;
}

public function endSetup()
{
    $this->raw_query("SET SQL_MODE=IFNULL(@OLD_SQL_MODE,'')");
    $this->raw_query("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)");
    return $this;
}

В основном большинство из них предназначены для совместимости, и некоторые из них ускоряют несколько операций (например, отключение проверок внешнего ключа).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top