如何使用 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/Eloquent 中获得完整的关系

如何在 laravel 5 中使用 Eloquent 更新数据透视表

如何在 Eloquent 模型中使用 Laravel Livewire?

如何在 Laravel 4 中手动创建一个新的空 Eloquent 集合

如何使用 eloquent 在 laravel 迁移中删除 POSTGRES 表或视图?