添加迁移以将整数设置为无符号

时间:2014-02-13 12:45:11

标签: laravel

我有一张桌子,我想在id中添加 - > unsigned()。目前,迁移看起来像是:$table->increments('id');

所以我想进行一次新的迁移,将其设置为unsigned,但文档中没有太多可以做到这一点。这是正确的方法:

public function up()
{
   Schema::table('authors', function($t) {
        $t->unsigned('id', 'authors_id_unsigned');
    });
}


public function down()
{
    Schema::table('authors', function($t) {
            $t->dropUnsigned('authors_id_unsigned');
    });
}

我只是在这里猜测,因为我在文档中找不到它。

2 个答案:

答案 0 :(得分:10)

您可以修改Laravel 5+中的列,但必须将doctrine / dbal依赖项添加到composer.json文件中。

public function up()
{
    Schema::table('my_table', function (Blueprint $table) {
        $table->integer('my_column')->unsigned()->change();
    });
}

public function down()
{
    Schema::table('my_table', function (Blueprint $table) {
        $table->integer('my_column')->change();
    });
}

答案 1 :(得分:5)

您无法使用Schema Builder更改此类详细信息。

要更改它,您必须运行原始查询。要实现这一点,您的迁移应该如下所示:

public function up()
{
   Schema::table('authors', function($t) {
        DB::statement("ALTER TABLE `authors` CHANGE COLUMN `id` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT FIRST");
    });
}


public function down()
{
    Schema::table('authors', function($t) {
        DB::statement("ALTER TABLE `authors` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT FIRST");
    });
}