Установите начальную форму поля автоматического приращения 1000 в миграции laravel 5.1


Мне нужно запустить мои идентификаторы с 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();
    });
}
Author: Anshul Mishra, 2015-12-10

4 answers

Это должно быть так (не проверено).

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;");
 17
Author: DelightedD0D, 2016-12-02 00:54:47

Большинство таблиц работают с приращениями, увеличивающимися от следующего по величине целого числа.

Всегда можно вставить целое число, которое больше текущего индекса автоинкрементирования. Затем индекс автоинкрементирования будет автоматически следовать от этого нового значения +1 вверх.

Итак, если у вас только что отчеканенная таблица, ваш текущий индекс равен 0, следующим ключом будет 0 + 1 = 1.

Нам нужен первичный ключ, который начинается с 1000, поэтому мы вставляем запись со значением идентификатора 999, так что следующая вставка станет 1000.

В коде:

 $startId = 1000;

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

И теперь у вас есть пустая таблица, в которой следующий идентификатор вставки должен быть 1000.

Пожалуйста, обратите внимание, что если у вас есть значения для заполнения таблицы со значениями идентификаторов startId, вам нужно сделать это перед выполнением этих инструкций. В противном случае база данных выдаст ошибку о нарушении ограничений.

Это должно работать независимо от базы данных, но если есть база данных, которая не следует этому правилу автоматического создания я бы с удовольствием послушал об этом.

 4
Author: Tschallacka, 2017-08-22 08:52:59

Миграция для создания таблицы и установки ее значения автоматического увеличения с 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() может использоваться для выполнения любого отдельного оператора SQL, который вам нужен.

 0
Author: Captain Hypertext, 2018-03-08 15:52:35

Метод Прашанта работает без проблем. Но, как было сказано ранее, не ставьте use DB; в начало вашего файла.

enter image description here

И вот результаты после php artisan migrate

And here are the results

 -4
Author: Szabi Zsoldos, 2016-06-28 14:52:28