如何使用 Eloquent 在 Laravel 中设置 AUTO_INCREMENT?
Posted
技术标签:
【中文标题】如何使用 Eloquent 在 Laravel 中设置 AUTO_INCREMENT?【英文标题】:How to set AUTO_INCREMENT in Laravel with Eloquent? 【发布时间】:2015-01-15 23:47:07 【问题描述】:我正在开发一个应用程序,而我的雇主希望用户表中的 id 应该从 100,000 而不是 1 开始。如何实现呢?它是 Schema Builder 本身的参数吗?还是我必须在 mysql 中设置一些东西?
【问题讨论】:
【参考方案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 吗?我认为这是可能的,不是吗? 要回答你的问题,只要没有错误,你可以在方法中使用任何东西:)以上是关于如何使用 Eloquent 在 Laravel 中设置 AUTO_INCREMENT?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Eloquent 在 Laravel 中开始查询?
如何在 laravel 5 中使用 Eloquent 更新数据透视表
如何在 Eloquent 模型中使用 Laravel Livewire?