php mysql migration laravel-5.1

php - Establezca el campo de incremento automático de inicio de formulario 1000 en la migración 5.1.



mysql migration (4)

Debería ser así (no probado).

use Illuminate/Database/Migrations/Migration; use Illuminate/Support/Facades/DB; class MyTableMigration extends Migration { /** * Run the migrations. * * @return void */ public function up() { $statement = "ALTER TABLE MY_TABLE AUTO_INCREMENT = 111111;"; DB::unprepared($statement); } /** * Reverse the migrations. * * @return void */ public function down() { } }

Actualizar

//Your migrations here: Schema::create(''users'', function (Blueprint $table) { $table->bigIncrements(''id'')->unsigned(); $table->integer(''qualification_id'')->nullable(); $table->integer(''experience_id'')->nullable(); }); //then set autoincrement to 1000 //after creating the table DB::update("ALTER TABLE users AUTO_INCREMENT = 1000;");

Necesito iniciar mis IDs desde 1000 en la tabla de usuarios, ¿cómo podría crear la migración para esto?

Mi migración actual es:

public function up() { Schema::create(''users'', function (Blueprint $table) { $table->increments(''id''); // how can I start this from 1000 $table->integer(''qualification_id'')->nullable(); $table->integer(''experience_id'')->nullable(); }); }


El método de Prashant funciona sin problemas. Pero como se dijo anteriormente, no use DB; en la parte superior de su archivo.

Y aquí están los resultados tras la php artisan migrate


La mayoría de las tablas trabajan con incrementos que aumentan desde el siguiente entero más grande.

Siempre se puede insertar un entero, que es más alto que el índice actual de autoincremento. El índice de autoincremento luego seguirá automáticamente a partir de ese nuevo valor +1 arriba.

Por lo tanto, si tiene una tabla recién acuñada, su índice actual es 0, la siguiente clave será 0 + 1 = 1.

Lo que queremos es una clave principal que comience en 1000, así que lo que hacemos es insertar un registro con un valor de identificación de 999, por lo que la siguiente inserción se convertirá en 1000.

En codigo:

$startId = 1000; DB::table(''users'')->insert([''id''=> $startId - 1]); DB::table(''users'')->where(''id'',$startId - 1)->delete();

y ahora tiene una tabla vacía donde la siguiente identificación de inserción debería ser 1000.

Tenga en cuenta que si tiene valores para sembrar en la tabla con valores de id < startId , debe hacerlo antes de ejecutar estas declaraciones. De lo contrario, la base de datos lanzará un error de violación de restricción.

Esto debería funcionar como una base de datos independiente, pero si hay una base de datos que no sigue esta regla de autoincremento, me encantaría saberlo.


Migración para crear una tabla y establecer su valor de incremento automático a partir de Laravel 5.5

public function up() { Schema::create(''users'', function (Blueprint $table) { $table->increments(''id''); $table->integer(''qualification_id'')->nullable(); $table->integer(''experience_id'')->nullable(); }); // Here''s the magic /DB::statement(''ALTER TABLE table_name AUTO_INCREMENT = 1000;''); }

DB::statement() se puede utilizar para ejecutar cualquier instrucción SQL que necesite.