我有两个数据透视表,其中包含attendees
和programs
的预订。每条记录都包含预订的attendee_id
和program_id
如果有记录条目,即预订,则意味着与会者已注册。
我想迁移我的表格,以便有一个字段registered
和waitlisted
。像这样。
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
。我该怎么做?
答案 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
这只会运行指定的播种器类,我认为这是你想要的。
希望这有帮助。