我正在尝试通过 DatabaseSeeder Laravel来播种我的数据库,但是当它为数据库播种时,第一行的ID为2而不是1。
DatabaseSeeder.php
public function run()
{
foreach ($this->to_truncate as $table) {
DB::table($table)->truncate();
}
$this->call('UsersTableSeeder');
}
UsersTableSeeder.php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
public function run()
{
factory('App\User', 1)->create();
}
}
ModelFactory.php
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'full_name' => 'Jakub Kohout',
'username' => 'Admin',
'email' => 'test@gmail.com',
'password' => bcrypt('Uchiha'),
'role_id' => 1
];
});
我的播种过程如下:
heroku run php artisan migrate
heroku run php artisan db:seed
这是我的用户模型的迁移:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('username');
$table->string('email')->unique();
$table->string('full_name');
$table->integer('role_id')->unsigned();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}
答案 0 :(得分:2)
如果您的ID是自动增量并且您先放入1行然后删除它,那么第二行ID将是2,它是mysql而不是laravel。你可以通过删除表来解决这个问题,然后再次创建它,自动增量从1开始。
或者您可以查询:
ALTER TABLE tablename AUTO_INCREMENT = 1
答案 1 :(得分:1)
我假设您正在使用MySQL - 如果是这样,您可以运行以下命令:
SHOW VARIABLES LIKE 'auto_inc%';
它应该返回类似:
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 10 |
| auto_increment_offset | 2 |
+--------------------------+-------+
抵消是什么让你头痛。这两个都可以通过运行(在MySQL中)来设置:
SET @@auto_increment_increment=1;
SET @@auto_increment_offset=1;