2015-09-08 5 views
2

У меня есть таблица базы данных locations, и мне нужно добавить новый столбец status. Я установил следующий файл миграции, который добавляет поле отлично, когда я запускаю php artisan migrate, но как я могу вставить значение Active для каждой строки таблицы?Laravel 5.1 посевной столбец

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class AddStatusToLocationsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::table('locations', function(Blueprint $table) 
     { 
      $table->string('status')->after('email'); 
     }); 
    } 

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

ответ

1

Вы можете установить поле значение по умолчанию

$table->string('status')->after('email')->default('active') 

Если вам нужно обновить только текущие записи, вы можете сделать с посевом:

выполнения этого ремесленника команда:

php artisan make:seeder AddStatusSeeder  

Затем в AddStatusSeeder:

<?php 

use Illuminate\Database\Seeder; 

class AddStatusSeeder extends Seeder 
{ 
    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function run() 
    { 
     DB::table('locations')->update([ 
      'status' => 'Active' 
     ]); 
    } 
} 
0

Вам необходимо использовать database seeding. Вы можете создать модель для таблицы местоположений или использовать способ вставки DB::table.

Затем вы можете запустить php artisan migrate --seed, чтобы создать схему и заполнить БД.

+0

Да у меня уже есть модель для таблицы местоположений и файл сеялки. Но мой вопрос: как я засеваю новый столбец? – V4n1ll4

1

У вас есть два решения

Вы можете полностью добавить значение к существующей сеялке для этой таблицы

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

foreach(Location::all() as $location){ 
    $location->status = 'Active'; 
    $location->save(); 
} 
Смежные вопросы