【问题标题】:How to set AUTO_INCREMENT in Laravel with Eloquent?如何使用 Eloquent 在 Laravel 中设置 AUTO_INCREMENT?
【发布时间】:2015-01-15 23:47:07
【问题描述】:

我正在开发一个应用程序,而我的雇主希望用户表中的 id 应该从 100,000 而不是 1 开始。如何实现呢?它是 Schema Builder 本身的参数吗?还是我必须在 MySQL 中设置一些东西?

【问题讨论】:

    标签: mysql laravel laravel-4


    【解决方案1】:

    在 Laravel 8 中,您可以在创建表时在模式中使用 from() 或 startingValue() 来设置自动增量

    $table->id()->from(100000);

    或使用

    $table->id()->startingValue(100000);

    【讨论】:

      【解决方案2】:

      好吧,我在游戏中很晚才来找你,但是如果你使用 truncate 方法,我相信主键的自增值会自动重置为 1。

      我目前正在从事一个项目,我正在使用我正在更新的站点的实际实时数据更新我的开发数据库。我在数据进入时重新分配主键值,因此根据对实时数据所做的更改,主键可能会更改,因此我经常不得不截断并重置自动增量值。我在 laravel 8 中发现在模型上发出 truncate() 方法可以实现这一点。

      例如

      App\Models\User::truncate();
      

      截断用户表并将主键'id'自动递增值重置为1;

      你在很多个月前发布了这么多,你可能已经发现了这个,我想。

      【讨论】:

        【解决方案3】:

        您可以使用 SQL 本身来执行此操作。 ALTER TABLE <table_name> AUTO_INCREMENT=100000;.

        或者

        here那样做

        并使用没有准备的语句;

        $statement = "ALTER TABLE MY_TABLE AUTO_INCREMENT = 100000;";
        
        DB::unprepared($statement);
        

        DB::update("ALTER TABLE {your table name} AUTO_INCREMENT = 100000;");
        

        然后可以将其放入创建表的迁移中。

        【讨论】:

        • 我想我可以做到,但如果 Laravel 本身有什么东西,每次我迁移数据库时它会为我节省一些时间吗?
        • 您可以使用 DB::raw 语句等,但这仍然与您正在做的相同,如果您正在编辑以向您展示。
        • 我可以在定义架构后在 up() 方法中使用架构构建器中的 DB:raw 吗?我认为这是可能的,不是吗?
        • 要回答你的问题,只要没有错误,你可以在方法中使用任何东西:)
        猜你喜欢
        • 2018-07-22
        • 1970-01-01
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 2019-10-01
        相关资源
        最近更新 更多