有没有一种方法可以在 laravel 4 中使用 eloquent 或 fluent 截断数据库中的所有表?我不想指定表名,我只想截断所有表。换句话说,清空所有表。
原文由 Mounir 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我根据@Hao Luo 的回答。此外,它还有这些优点:
这是代码:
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");
希望你喜欢! :)
原文由 ch271828n 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
1 回答1.2k 阅读
所以确保已安装
composer require doctrine/dbal
1.获取所有表名
2. 循环遍历表名数组并使用 Schema Builder 截断
SQLSTATE[42000]:语法错误或访问冲突:1701 无法截断外键约束中引用的表
您可以禁用外键检查
并确保重新 启用 它