Создание и работа с новой таблицей при установке модуля

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

03.08.2011 01:22

Есть необходимость создавать новую таблицу при установке модуля. Модуль Mynamespace_Mymodule версии 0.1.0 .
В папке Mynamespace/Mymodule/sql/mynamespace_mymodule_setup/ создан файл mysql4-install-0.1.0.php
<?php

    $installer = $this;
	$installer->startSetup();
	$installer->run("
	 
	CREATE TABLE `{$this->getTable('mynamespace_mymodule_history')}` (
	  `entity_id` int(11) unsigned NOT NULL auto_increment,
	  `customer_email` varchar(255) NOT NULL default '',
	  `object_type` varchar(10) NOT NULL default '',
	  `object_id` int(11) NOT NULL default '0',
	  `created_time` varchar(100) NOT NULL default '',
	  PRIMARY KEY (`entity_id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;

	");
	$installer->endSetup();

Однако при установке модуля из архива через magento connect таблицы не создается. Где ошибка?

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

03.08.2011 09:30

Возможно, система считает ваш модуль уже установленным.
Скрипт установки запускается только единократно.
Если вы хотите проверить его повторо - вам нужно удалить соответствующую модулю запись из таблицы core_resource.

#3 Ярослав Богуцкий 2
  • Группа: Пользователь
  • Сообщений: 75
  • Регистрация: 07.07.2011

03.08.2011 11:12

Спасибо, как раз в этом дело и было. Получается что если в core_resource уже есть запись, то инструкции установки, в частности создание таблиц в бд, не будут производиться?

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

03.08.2011 11:32

Да, если запись в таблице core_resource для модуля уже присутствует, то повторная установка производиться не будет.
Однако если версия модуля, указанная в config.xml превышает версию, указанную в core_resource, то система попробует выполнить обновление, если найдёт у модуля соответствующий скрипт обновления до требуемой версии.

Поделиться темой: