Удаление всех таблиц из базы данных MySQL в Yii2
Иногда бывает необходимость удалить все таблицы из БД. Например, это может понадобиться перед выполнением тестов. Вот мое решение данной ситуации.
Так как в хорошо спроектированной базе данных, есть внешние ключи, то в первую очередь необходимо отключить их проверку. Для этого выполняем следующий запрос к БД SET foreign_key_checks = 0
.
Далее необходимо получить список всех таблиц. Это легко осуществить через объект yii\db\Schema
соединения, пройтись по ним и удалить.
После этого включаем обратно проверку внешних ключей.
Ниже предоставляю готовый код удаления всех таблиц в СУБД MySQL средствами Yii framework 2
.
Yii::$app->getDb()->createCommand("SET foreign_key_checks = 0")->execute(); foreach (\Yii::$app->db->schema->tableNames as $tableName) { Yii::$app->getDb()->createCommand()->dropTable($tableName)->execute(); } Yii::$app->getDb()->createCommand("SET foreign_key_checks = 1")->execute();