Laravel播种机设置ID为2

时间:2016-02-07 10:37:59

标签: php laravel laravel-5.1 seeding

我正在尝试通过 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();
    });
}

2 个答案:

答案 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;