2017-01-30 1 views
1

Моих существующих таблицами, как показано нижеДобавление столбца с внешним ключом

Story 
------------------------------- 
| id | name | author_id | date | 

Теперь я хочу добавить еще один столбец внешнего ключа created_by, как добавить это без удаления существующих данных. Существующий внешний ключ данных должен быть идентификатором администратора.

Из этого вопроса я понял, как добавить столбец, не удаляя все существующие данные.

How to add column in a table using laravel 5 migration without losing its data?

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

+0

Как ваш admin_id связан с таблицей историй? – Vikash

+0

Администратор также является одним из пользователей, он может добавить историю .. просто получил приблизительную идею за дизайн стола. –

+0

Я хочу знать, как admin_id связан с вашим новым столбцом 'created_by'. Я имею в виду, что некоторые из author_id тоже admin_id. Вы хотите назначить created_by тем автору, который является администратором? – Vikash

ответ

1

Чтобы добавить столбец можно ссылаться в существующую таблицу с --table флагом по команде make:migration ремесленника:

php artisan make:migration add_created_by_column_to_story_table --table=story 

Затем в пролете будет использовать table() метод вместо метода create():

/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    Schema::table('story', function(Blueprint $table) { 
     $table->integer('created_by'); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::table('story', function(Blueprint $table) { 
     $table->dropColumn('created_by'); 
    }); 
} 
+0

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

+0

Вы говорите о заполнении этой колонки столбцом 'author_id' уже на столе при запуске миграции? –

+0

Да. после добавления этого столбца мы должны искать «admin» из таблицы users и этот идентификатор, который мы должны заполнить для старых записей в таблице рассказов –

0

Использование @Eric Tucker ответ для создания миграции

Теперь для и pdating базы данных новыми значениями created_by. Я пишу вам, как я обновляю свой код, который имеет дело с разными серверами (в моем случае локальный, тест &).

Создать маршрут

Route::get('upgrade/createdBy','[email protected]') 

Создать UpgradeController

PHP ремесленник грим: контроллер UpgradeController

В вашем UpgradeControlller.php

Теперь запустите URL http://your_domain/upgrade/createdBy в вашем браузере на разных серверах, и ваш код будет обновлен.

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

Вот как я делаю обновление db на нескольких серверах.