сократите все таблицы в laravel с помощью красноречивого
Есть ли способ, которым я мог бы сократить все таблицы в бд, используя красноречивый или свободно владеющий laravel 4? Я не хочу указывать имена таблиц, я просто хочу усечь все таблицы. Другими словами, опустошите все столы.
15
4 answers
1. Получить все имена таблиц
$tableNames = Schema::getConnection()->getDoctrineSchemaManager()->listTableNames();
2. Выполните цикл по массиву имен таблиц и выполните усечение с помощью построителя схем
foreach ($tableNames as $name) {
//if you don't want to truncate migrations
if ($name == 'migrations') {
continue;
}
DB::table($name)->truncate();
}
36
Author: Hao Luo, 2013-09-20 06:19:52
Вот как я усекаю все таблицы внутри базы данных (включая исключения таблиц), это работает для меня.
// set tables don't want to trucate here
$excepts = ['migrations'];
$tables = DB::connection()
->getPdo()
->query("SHOW FULL TABLES")
->fetchAll();
$tableNames = [];
$keys = array_keys($tables[0]);
$keyName = $keys[0];
$keyType = $keys[1];
foreach ($tableNames as $name) {
//if you don't want to truncate migrations
if (in_array($name[$keyName], $excepts))
continue;
// truncate tables only
if('BASE TABLE' !== $name[$keyType])
continue;
\DB::table($name)->truncate();
}
0
Author: Mochamad Gufron Efendi, 2014-07-21 01:10:48
Вот мой ответ, основанный на @Хао Ло. Более того, у него есть следующие плюсы:
- Вам не нужно устанавливать какой-либо дополнительный пакет (нет необходимости в доктрине)
- Он очень хорошо поддерживает laravel 5
- Он отключает ограничение внешнего ключа (если вы усекаете, не заботясь о заказах, и включаете ограничение внешнего ключа, вы, скорее всего, получите ошибку)
Вот код:
DB::statement("SET foreign_key_checks=0");
$databaseName = DB::getDatabaseName();
$tables = DB::select("SELECT * FROM information_schema.tables WHERE table_schema = '$databaseName'");
foreach ($tables as $table) {
$name = $table->TABLE_NAME;
//if you don't want to truncate migrations
if ($name == 'migrations') {
continue;
}
DB::table($name)->truncate();
}
DB::statement("SET foreign_key_checks=1");
Надеюсь, вам понравится!:)
0
Author: fzyzcjy, 2018-06-18 07:31:39
Это быстрый способ удалить базу данных и создать ее заново:
// Get db name
$db = DB::connection()->getDatabaseName();;
// Delete db
DB::statement('DROP DATABASE `'.$db.'`');
// Create db
DB::statement('CREATE DATABASE `'.$db.'`');
Этот код также будет поддерживать соединение с вашей базой данных.
-7
Author: TechyTimo, 2016-08-09 09:58:12