Magento 2 addIndex

Я новый пользователь Magento и пытаюсь добавить уникальный индекс базы данных на основе двух столбцов в настраиваемую таблицу базы данных с помощью UpgradeSchema.php. Таблица уже существует, как и индексируемые столбцы. Вот моя часть кода:

$installer->getConnection()
        ->addIndex(
            $installer->getIdxName(
                $installer->getTable('ds_runs'),
                ['date_delivery', 'run'],
                AdapterInterface::INDEX_TYPE_UNIQUE
            ),
            ['date_delivery', 'run'],
            ['type' => AdapterInterface::INDEX_TYPE_UNIQUE]
        );

Ошибка, которую я получаю при запуске установки: обновление

Base table or view not found: 1146 Table 'doorstep.ds_runs_date_delivery_run_run_id' 
doesn't exist,query was:DESCRIBE `DS_RUNS_DATE_DELIVERY_RUN_RUN_ID`

Не знаю, что я здесь делаю не так. Я вижу, что он ищет таблицу на основе конкатенации имени таблицы и столбцов, которые я хочу проиндексировать.


person mentalist    schedule 31.07.2018    source источник


Ответы (1)


ОБНОВЛЕНИЕ: это правильное решение:

 $installer->getConnection()
    ->addIndex(
            $installer->getTable('ds_runs'),
            $installer->getConnection()->getIndexName($installer->getTable('ds_runs'), ['date_delivery', 'run'], Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE),
    ['date_delivery', 'run'],
   Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
);
person Marko Durasic    schedule 31.07.2018
comment
Я внес изменения в свой ответ, вы можете попробовать это? - person Marko Durasic; 31.07.2018
comment
Нет проблем, я обновил ответ, чтобы просто придерживаться правильного решения, удалил старое. - person Marko Durasic; 31.07.2018