Мне нужно запустить свои идентификаторы от 1000 в таблице пользователей, как я могу создать миграцию для этого.
Моя текущая миграция:
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(); }); }
Это должно быть так (не проверено).
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() { } }
Обновить
//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 DB::update("ALTER TABLE users AUTO_INCREMENT = 1000;");
Большинство таблиц работают с приращением, увеличивающимся от следующего большого целого числа.
Всегда можно вставить целое число, которое больше текущего индекса автоинкремента. Тогда индекс автоматического инкрементного перехода автоматически изменится с нового значения +1 вверх.
Итак, если у вас есть свежеиспеченная таблица, ваш текущий индекс равен 0, следующая клавиша будет 0 + 1 = 1.
Нам нужен первичный ключ, начинающийся с 1000, поэтому мы делаем вставку записи с значением id 999, поэтому следующая вставка станет 1000.
В коде:
$startId = 1000; DB::table('users')->insert(['id'=> $startId - 1]); DB::table('users')->where('id',$startId - 1)->delete();
и теперь у вас есть пустая таблица, где следующий идентификатор вставки должен быть 1000.
Обратите внимание, что если у вас есть значения для семени в таблицу с значениями id < startId
вам нужно сделать это, прежде чем выполнять эти инструкции. В противном случае база данных выдает ошибку нарушения ограничения.
Это должно работать агностик базы данных, но если есть база данных, которая не соответствует этому правилу автоинкремента, я бы хотел услышать об этом.
Метод Прашанта работает без проблем. Но, как сказано ранее, не use DB;
в верхней части файла.
И вот результаты после php artisan migrate