ElisDN писал(а): ↑2022.05.23, 00:22
terrarium volition писал(а): ↑2022.05.22, 17:44
Уважаемые товарищи, подскажите, пожалуйста, как убрать этот ужас с экрана?
Сначала расскажите, зачем вам понадобилось запускать миграции на странице.
Есть мастер-БД с предустановленными таблицами.
Есть перечень юнитов, сведённый в GridView, который может расширяться по клику "Создать".
В самом начале работы на сайте - в момент посещения страницы index, а так же, каждый раз, когда создаётся новый юнит, под юнит создаётся новая БД:
Код: Выделить всё
$dbname = $this->getfullDBname($id);
$db = new Databases();
$iscreated = $db->createDB($dbname);
, а в эту БД копируются таблицы из мастер-БД:
Код: Выделить всё
$preconfigtables = ['Table1', 'Table2', 'Table3'];
foreach($preconfigtables as $table){
$liveDbName = "db_master";
$command = Yii::$app->preinstallDb->createCommand("CREATE TABLE IF NOT EXISTS `$dbname`.`$table` SELECT * FROM `$liveDbName`.`$table`");
$command->execute();
}
При копировании таблиц primaryKey то-ли не передаётся как надо, то-ли ещё чего, но я не могу скопированные таблицы отредактировать в phpmyadmin - нет чекбоксов выбора столбцов и т.д.
Хотя при этом, если я проверяю наличие primaryKey так:
то вижу, что primaryKey в таблице есть. Но мне от этого не легче, редактировать я таблицы не могу.
Чтобы добить вопрос я после копирования таблиц добавляю команду:
Код: Выделить всё
Yii::$app->userDbLocator->switchId($id);
foreach($preconfigtables as $table){
try{
$iscreated = $db->addPrimaryKey('id', $dbname . '.' . $table, 'id');
}catch(yii\db\Exception $e) {
$session->set('PRIMARY_KEY', 'Первичный ключ уже задан');
}
}
Yii::$app->userDbLocator->switchId('master');
Происходит всё это в модели контроллера, который относится к таблице юнитов GridView.
Я вызываю эту модель из actionIndex контроллера в самом начале - в момент посещения index страницы.
В ответ - текст миграции. Но я его во view не передаю.
Как мне сделать так, чтобы создание ключа прошло потихому?