Установочные данные не работают в Magento 2.1


У меня есть Installdata скрипт ниже, который отлично работает на Magento 2.2, но не удалось установить данные на Magento 2.1

class InstallData implements \Magento\Framework\Setup\InstallDataInterface
{   
public function install(
    \Magento\Framework\Setup\ModuleDataSetupInterface $setup,
    \Magento\Framework\Setup\ModuleContextInterface $context
) {    
    $contextInstall = $context;
    $contextInstall->getVersion();        
    $data = [];
    $statuses = [
        'data_one' => __('Data One'),
        'data_two' => __('Data Two'),
        'data_three' => __('Data Three'),                                   
    ];
    foreach ($statuses as $code => $info) {
        $data[] = ['status' => $code, 'label' => $info];
    }
     if (!$setup->tableExists('table_name')) {
    $setup->getConnection()->insertArray($setup->getTable('table_name'), ['db_colum_one', 'db_column_two'], $data);
     }

}
}

Может ли кто-нибудь помочь, если я что-то упустил?

Author: Qaisar Satti, 2018-05-14

2 answers

Проблема в вашем условии if.

if (!$setup->tableExists('table_name')) {

Ваше условие - проверить, не завершается ли таблица , а затем выполнить запрос. если таблица создана, то она не будет выполнена.Я думаю, что так и произошло. Ваше решение будет изменено, если коллекция пуста, а затем добавьте записи.

 2
Author: Qaisar Satti, 2018-05-14 12:09:37

Для выполнения InstallData.php Вам необходимо удалить запись вашего модуля из таблицы setup_module, чем выполнять

php bin/magento setup:upgrade

Надеюсь, это поможет вам. !!

 0
Author: , 2018-05-14 10:57:34