我有一些表格,我需要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
。
我该如何解决这个问题?我应该将更新作为全新的迁移吗?有人做过吗?
答案 0 :(得分:2)
unsignedTinyInteger()
方法的第二个参数是一个布尔值,用于标记它是否为自动增量字段。默认为false
,因此您只需更新迁移内容以传递true
。
$table->unsignedTinyInteger('field1', true);
作为未来的注释,Laravel 5.4.16中添加了tinyIncrements()
便利方法来做到这一点。