Советы PHP-разработчика

Блог содержащий короткие заметки касающиеся программирования для web.

Удаление всех таблиц из базы данных MySQL в Yii2

Удаление всех таблиц из базы данных 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();
  • 2016-04-02 14:45:49