像其他人一样,当你删除一行时,真的没有必要把计数器移回来。但是,您可以创建一个表,它将删除所有表行并重置计数器。truncate
不能对它应用表 (与仅删除所有行,同时保留自动递增计数器的表不同。truncate
Foreign Key Constraints
truncate
delete
因此,在使用 时,MySQL可能会阻止您截断已应用于它的表。foreign key constrains
foreign key constraints
您可以执行以下步骤来实现所需的目标,但请注意,数据完整性可能存在风险。我只将其用于测试目的。
-
按如下方式编辑类(可在 中查看):DatabaseSeeder
app/database/seeds/DatabaseSeeder.php
<?php
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
// Disable Foreign key check for this connection before running seeders
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
$this->call('UserTableSeeder');
// ...
// FOREIGN_KEY_CHECKS is supposed to only apply to a single
// connection and reset itself but I like to explicitly
// undo what I've done for clarity
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
}
-
现在,Table Seeder 类(在本例中,应在 中创建)可以按如下方式调用 truncate 表:UserTableSeeder
app/database/seeds/UserTableSeeder.php
<?php
class UserTableSeeder extends Seeder {
public function run()
{
// Truncate the table.
DB::table('users')->truncate();
// The auto-increment has been reset.
// Now we can start adding users.
User::create(
array(
'email' => 'example@domain.com',
'password' => Hash::make('test')
)
);
}
}