Laravel:如何运行迁移以向枢轴表添加字段,并在枢轴存在时插入值

时间:2015-07-20 21:50:14

标签: laravel laravel-4

我有两个数据透视表,其中包含attendeesprograms预订。每条记录都包含预订attendee_idprogram_id 如果有记录条目,即预订,则意味着与会者已注册

我想迁移我的表格,以便有一个字段registeredwaitlisted。像这样。

  public function up()
  {
    //
    Schema::table('bookings', function(Blueprint $table)
    {
      $table->increments('id');
      $table->boolean('registered');
      $table->boolean('waitlisted');
    });
    Schema::table('prog_bookings', function(Blueprint $table)
    {
      $table->increments('id');
      $table->boolean('registered');
      $table->boolean('waitlisted');
    });
  }

但是要完成迁移,如果我的数据库中存在registered(数据透视表中有记录),我需要将1设置为booking。我该怎么做?

1 个答案:

答案 0 :(得分:1)

迁移用于设置数据库表和模式,我认为最好将其与生成和填充表中的值分开。

我建议您使用脚本来完成将registered设置为1的工作。 Seeding是Laravel中数据库脚本的便捷组件。例如:

# AttendeeRegisteredSeeder.php

public function run()
{
    foreach (Attenndee::all() as $attendee) {
        foreach ($attendee->programs as $program) {
            $program->pivot->registered = 1;
            $program->pivot->save();
        }
    }

}

完成播种器脚本后,运行artisan命令:

php artisan db:seed --class=AttendeeRegisteredSeeder

这只会运行指定的播种器类,我认为这是你想要的。

希望这有帮助。