Laravel 5.1播种新专栏

时间:2015-09-08 08:46:56

标签: php laravel laravel-5

我有一个名为locations的数据库表,我需要添加一个新的status列。我设置了以下迁移文件,在运行php artisan migrate时添加了字段,但是如何为表中的每一行插入Active的值?

<?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');
        });
    }
}

3 个答案:

答案 0 :(得分:1)

你有两个解决方案

您可以完全为此表的现有播种机添加值

您还可以创建一个新的播种机,您可以在其中获取每个位置,添加新的字段值并将其另存为

foreach(Location::all() as $location){
    $location->status = 'Active';
    $location->save();
}

答案 1 :(得分: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'
         ]);
     }
 }

答案 2 :(得分:0)

您需要使用database seeding。您可以为locations表创建模型,也可以使用DB::table插入方式。

然后,您可以运行php artisan migrate --seed来创建架构并填充数据库。