2013-11-12 7 views
8

Есть ли способ установить начальное значение автоинкремента первичного ключа на таблице в Laravel 4 с помощью Migrations with the Schema Builder?Установить начальное значение автоинкремента в Laravel 4

Я хочу, чтобы идентификатор таблицы начинался с 100. Я знаю, что это возможно с использованием чистого SQL с ALTER TABLE MY_TABLE AUTO_INCREMENT = 111111;, но я хочу поддерживать управление версиями баз данных с помощью Laravel Migrations.

Любая идея?

ответ

21

Боюсь Laravel еще не есть способ изменить значение Autoincrement, но вы можете создать миграцию и сделать в ней:

<?php 

use Illuminate\Database\Migrations\Migration; 

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() 
    { 
    } 

} 
+0

Отлично, он отлично работает при миграции. Мне все же хотелось бы, чтобы это было на самой структуре. Я создал запрос о проблеме на репо, возможно, они будут реализовывать его https://github.com/laravel/framework/issues/2713 – arielcr

+3

@arielcr Вы можете использовать: 'DB :: update (" ALTER TABLE { имя вашей таблицы} AUTO_INCREMENT = 1; ");' в рамках Framework и в рамках миграций. – casafred

+0

@casafred - блестящее предложение - работал как шарм. –

1

Вот для Postgres:

class MyTableMigration extends Migration { 

    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 

    public function up() 
    { 
     $statement = "ALTER SEQUENCE my_table RESTART WITH 111111"; 
     DB::unprepared($statement); 
    } 

    ... 
} 
Смежные вопросы