一键删除数据库中的所有表

suj*_*sad 4 laravel-5

如何在laravel中一次性删除数据库中的所有表。

对于迁移,我们使用-

Artisan::call('migrate', ['--force' => true]);
Run Code Online (Sandbox Code Playgroud)

但是要删除所有表,有任何一个

谢谢

Yev*_*yev 8

php artisan db:wipe
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Laravel 6.x,这是删除所有表、它们的类型和视图的快速方法

详细描述:

$ php artisan db:wipe {--database=} {--drop-views} {--drop-types} {--force}
Run Code Online (Sandbox Code Playgroud)
  • database - 要使用的数据库连接
  • drop-views - 删除所有表和视图
  • drop-types - 删除所有表和类型(仅限 Postgres)
  • force - 强制操作在生产中运行

于2019年8月20日实施

此更改还在内部影响了 db:fresh 命令的功能。现在它只是调用db:wipe然后migrate


Ale*_*nin 5

为什么不使用这个:

Artisan::call('migrate:reset', ['--force' => true]);
Run Code Online (Sandbox Code Playgroud)


Isu*_*asa 5

Laravel 5.6文档中,他们指定了以下内容:

migrate:reset命令将回滚您应用程序的所有迁移:

php artisan migrate:reset

  • 如果您已重命名迁移,那么您仍然需要手动连接到数据库并删除旧表。如果工匠能够清空整个数据库就好了。 (2认同)

Dip*_*mar 5

您可以使用控制器方法来做到这一点

public function drop_tables(){
    DB::statement("SET FOREIGN_KEY_CHECKS = 0");
    $tables = DB::select('SHOW TABLES');
    foreach($tables as $table){
        Schema::drop($table->Tables_in_DbName);  /// replace <DbName> according to your Databse Name
        echo 'Table '.$table->Tables_in_DbName.' Droped. <br>'; // here too
    }
    DB::statement("SET FOREIGN_KEY_CHECKS = 1");
}
Run Code Online (Sandbox Code Playgroud)

根据您的要求调用它。

这将删除当前数据库中存在的所有表