Laravel 5.3:自动递增无符号TINYINT

时间:2017-08-07 14:01:56

标签: mysql laravel laravel-5.3 database-migration

我有一些表格,我需要tinyint个字段,这些字段必须为unsigned并设置为auto_increment

L5.3 Database : Migrations documentation 没有有定义unsigned auto-incrementing tinyint的方法。

我尝试使用DB::update()来实现它。我的表的迁移文件如下所示:

public function up()
{
    Schema::create('table_name', function (Blueprint $table) 
    {
        $table->unsignedTinyInteger('field1');
        $table->string('field2', 255);
        $table->primary('field1');
        $table->index('field2');

        $field = "field1";
    });

    $this->addAutoIncrements($field);    

}

public function addAutoIncrements($field)
{
    DB::update('ALTER TABLE table_name MODIFY $field TINYINT UNSIGNED NOT NULL AUTO_INCREMENT');
}

当我使用此类迁移文件尝试php artisan migrate时,它会迁移而不会任何错误,但未分配 auto-increment

我该如何解决这个问题?我应该将更新作为全新的迁移吗?有人做过吗?

1 个答案:

答案 0 :(得分:2)

unsignedTinyInteger()方法的第二个参数是一个布尔值,用于标记它是否为自动增量字段。默认为false,因此您只需更新迁移内容以传递true

$table->unsignedTinyInteger('field1', true);

作为未来的注释,Laravel 5.4.16中添加了tinyIncrements()便利方法来做到这一点。