【问题标题】:How can I set no auto increment in migration laravel 5.3?如何在迁移 laravel 5.3 中设置不自动增量?
【发布时间】:2017-05-13 13:05:28
【问题描述】:

我的代码迁移是这样的:

public function up()
{
    Schema::create('satkers', function (Blueprint $table) {
        $table->increments('id');
        ...
    });
}

我运行php artisan migrate。然后,我在数据库管理员中看到。是这样的:

我不希望它自动递增,那么我该如何通过迁移文件来做到这一点。

我该怎么做?

【问题讨论】:

    标签: php mysql laravel migration laravel-5.3


    【解决方案1】:

    如果你想要 id 而不是自动递增,那么你必须使用

    $table->integer('id')->unsigned();
    

    如果不需要 id 字段,则从迁移中删除 $table->increments('id');

    【讨论】:

    • OP 不希望为空和无符号,所以你应该删除 ->nullable() 并添加 ->unsigned()
    【解决方案2】:

    迁移时设置为integer(),主键设置为primary()

    $table->integer('id')->unsigned();
    $table->primary('id');
    

    另一种方式是define primary key in Eloquent model:

    Eloquent 还会假设每个表都有一个名为 id 的主键列。你可以定义一个 $primaryKey 属性来覆盖这个约定。

    此外,Eloquent 假设主键是一个递增的整数值,这意味着默认情况下主键会自动转换为 int。如果您希望使用非递增或非数字主键,您必须将模型上的公共 $incrementing 属性设置为 false。

    【讨论】:

      【解决方案3】:

      默认情况下,当您创建迁移文件时,它会假定表中会有一个自动递增的 id,但如果您不想要它。 改成这个

      $table->integer('id')->unsigned();
      $table->primary('id');
      

      保存您的迁移文件。 通过 php artisan 回滚您的迁移。 然后运行 ​​php migrate 命令。

      【讨论】:

        猜你喜欢
        • 2016-03-15
        • 2017-05-11
        • 1970-01-01
        • 1970-01-01
        • 2019-06-16
        • 2017-10-14
        • 2017-02-26
        • 1970-01-01
        • 2017-05-07
        相关资源
        最近更新 更多