Magento 1 собственная таблица базы данных
Я пытаюсь для моего модуля Magento 1 создать собственную таблицу базы данных. Я вижу мою запись установки в таблице core_resource, но моя таблица не создана.
Это мой config.xml:
<config>
<modules>
<UF_MagentoAdminScriptQueue>
<version>1.0.0</version>
<active>true</active>
<codePool>community</codePool>
<depends>
<Mage_Adminhtml />
</depends>
<extension_name>MagentoAdminScriptQueue</extension_name>
</UF_MagentoAdminScriptQueue>
</modules>
<global>
<models>
<magentoadminscriptqueue>
<class>UF_MagentoAdminScriptQueue_Model</class>
<resourceModel>uf_magentoadminscriptqueue_resource</resourceModel>
</magentoadminscriptqueue>
<uf_magentoadminscriptqueue_resource>
<class>UF_MagentoAdminScriptQueue_Model_Resource</class>
<entities>
<queue>
<table>uf_adminscriptqueue_queue</table>
</queue>
</entities>
</uf_magentoadminscriptqueue_resource>
</models>
<resources>
<magentoadminscriptqueue_setup>
<setup>
<module>UF_MagentoAdminScriptQueue</module>
</setup>
</magentoadminscriptqueue_setup>
</resources>
<blocks>
<magentoadminscriptqueue>
<class>UF_MagentoAdminScriptQueue_Block</class>
</magentoadminscriptqueue>
</blocks>
<helpers>
<magentoadminscriptqueue>
<class>UF_MagentoAdminScriptQueue_Helper</class>
</magentoadminscriptqueue>
</helpers>
</global>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<magentoadminscriptqueue before="Mage_Adminhtml">UF_MagentoAdminScriptQueue_Adminhtml</magentoadminscriptqueue>
</modules>
</args>
</adminhtml>
</routers>
</admin>
Это мой Installationscript sql/mysql4-install-1.0.0.php:
$installer = $this;
$installer->startSetup();
$queueTable = $installer->getTable('uf_adminscriptqueue/queue');
if ($installer->getConnection()->isTableExists($queueTable))
$installer->getConnection()->dropTable($queueTable);
$table = $installer->getConnection()->newTable($queueTable)
->addColumn(
'entity_id',
Varien_Db_Ddl_Table::TYPE_INTEGER,
null,
array(
'unsigned' => true,
'nullable' => false,
'primary' => true,
'identity' => true,
),
'Entity Id'
)
->addColumn(
'slug',
Varien_Db_Ddl_Table::TYPE_VARCHAR,
40,
array(
'default' => null,
),
'Slug'
)
->addColumn(
'name',
Varien_Db_Ddl_Table::TYPE_VARCHAR,
40,
array(
'default' => null,
),
'Name'
)
->addColumn(
'status',
Varien_Db_Ddl_Table::TYPE_SMALLINT,
null,
array(
'unsigned' => true,
'nullable' => false,
'default' => UF_MagentoAdminScriptQueue_Model_Offer::STATUS_NOTRUNNING,
),
'Status'
)
->addColumn(
'last_run',
Varien_Db_Ddl_Table::TYPE_DATETIME,
null,
array(
'default' => null,
),
'Created At'
)
->setComment('UF Script Queue Table');
$installer->getConnection()->createTable($table);
$scripts = array(
array(
'slug' => 'getCategories',
'name' => 'Get Categories'
),
array(
'slug' => 'importCategories',
'name' => 'Import Categories'
),
array(
'slug' => 'exportProductToCsv',
'name' => 'Export Products to CSV'
),
array(
'slug' => 'updateMediaGallery',
'name' => 'Update Media Gallery'
),
);
foreach ($scripts as $script) {
Mage::getModel('uf_adminscriptqueue/queue')
->setData($script)
->save();
}
$installer->endSetup();
Тогда у меня есть UF_MagentoAdminScriptQueue_Model_Script в каталоге моделей:
class UF_MagentoAdminScriptQueue_Model_Script extends Mage_Core_Model_Abstract
{
const STATUS_NOTRUNNING = 1;
const STATUS_RUNNING = 2;
const STATUS_INQUEUE = 3;
/**
* Init
*/
protected function _construct()
{
$this->_init('uf_adminscriptqueue/queue');
}
/**
* Processing object before save data
*
* @return Mage_Core_Model_Abstract
*/
protected function _beforeSave()
{
parent::_beforeSave();
}
/**
* Save queue related objects
*
* @return $this
*/
protected function _afterSave()
{
return parent::_afterSave();
}
}
Я не показываю код для ресурса и класса коллекции, в этих файлах только конструктор с инициализацией 'uf_adminscriptqueue/queue'.
Кто-нибудь знает, что я делаю не так?
Ура Керстель
0 ответов
Ошибка в расположении файла: согласно вашему config.xml скрипт установки должен быть помещен в:
sql/magentoadminscriptqueue_setup/
папка, а не в sql. Также я предлагаю установить https://packagist.org/packages/n98/magerun. Это поможет вам увидеть, что на самом деле будет применено при запуске setup: upgrade.
$ php vendor/bin/n98-magerun sys:set:in
Перед тем, как запускать эту команду, удалите из core_resource запись, относящуюся к установленной версии модуля. Не забывайте о кешах: очистите их перед повторным запуском скрипта установки.