2014-01-27 5 views
0

Я создал таблицу с использованием миграции и схемы. Я также добавил поле. затем в базу данных были добавлены несколько записей. Я понял, что забыл добавить столбец. Я добавил строку в моей схеме $table->string('activation', 256);, а затем в PowerShell я выполнил следующую команду, чтобы обновить таблицу:Laravel Migration удаляет запись и обновляет ее

php artisan migrate 

он обновил таблицу, но также будут удалены записи, что я должен сделать, чтобы пропустить удаление записей при обновлении таблицы. Ниже приводится схема:

Schema::create('users', function($table) 
     { 
         $table->increments('id'); // incremental index 
         $table->string('username', 256); // username 
         $table->string('password', 256); // password 
         $table->string('name', 512); // full name of the user 
         $table->string('email', 512); // email address 
         $table->string('finding', 512); // the way the site found by the user 
         $table->string('mobile', 24); // the mobile number 
         $table->string('date', 256); // UNIX timestamp [saves in VARCHART to prevent any truncation 
         $table->string('birthday', 64); // birthday saved in dd-mm-yyyy format 
         $table->string('sex', 24); // saved in Persian characters male or female 
         $table->string('activation_code', 256); 
         $table->integer('activation_status');      
         $table->integer('newsletter'); // Boolean :: 0 -> no 1-> yes 
         $table->integer('province'); // the id of the province (corresponds to table.provinces) 
         $table->integer('city'); // the id of the city (corresponds to table.city)      
         $table->timestamps(); 
     }); 

ответ

0

Если вам нужно добавить/редактировать/удалить что-то из миграции после запуска его следует добавить еще один файл переноса. Некоторая дополнительная документация Laravel 4: http://laravel.com/docs/schema http://laravel.com/docs/migrations

+0

какой большой недостаток! –

+0

Не совсем, миграции сделаны так, что вы можете использовать их в командах (в сочетании с чем-то вроде git). Когда вы добавите столбец в таблицу, и я (например) вытащить код, я с легкостью смогу увидеть, что вы изменили, и перенести свой дополнительный столбец, не потеряв все мои данные – Gregory

+0

, когда я его обновляю, он удаляет данные. он не сохраняет их ... –

2

Там нет недостатка есть. Вы просто используете его неправильно.

Вам нужно создать таблицу, вы делаете:

php artisan migrate:make create_table_users 

Затем вы создаете схему:

public function up() 
{ 
    Schema::create('users', function($table) 
    { 
     $table->increments('id'); // incremental index 
     $table->string('username', 256); // username 
     $table->string('password', 256); 
     ... 
     $table->timestamps(); 
    }); 
} 

public function down() 
{ 
    Schema::dropIfExists('users'); 
} 

метод up является мигрировать и метод down является откатить миграции , он потеряет ваш стол.

Тогда вы

php artisan migrate 

Если вы снова:

php artisan migrate 

Это не будет работать, потому что миграция уже мигрировали, чтобы добиться успеха во втором мигрируют вы должны:

php artisan migrate:rollback 

Команда отката будет выполнять метод down, который в этом случае будет , УБЕДИТЕСЬ о своей таблице.

Если вам просто нужно добавить новый столбец в таблицу, вы должны:

php artisan migrate:make add_column_to_users_table 

И добавить

public function up() 
{ 
    Schema::table('users', function($table) 
    { 
     $table->string('activation', 256); 
    }); 
} 

public function down() 
{ 
    Schema::table('users', function($table) 
    { 
     $table->dropColumn('activation'); 
    }); 
} 

А потом вам придет иметь возможность запускать

php artisan migrate 

Снова.

Если миграция каким-то образом удалила ваши записи или таблицу, это потому, что вы запустили неправильную команду.

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