1

シードしたいピボットテーブルがあります。PK と FK に加えて、テーブルにはさらに 2 つの列が含まれています: 到着と出発 (タイプ: タイムスタンプ)。Carbon を使用して、前の列をランダムに入力しています。これが私のコードです:

$faker = Faker::create();
for( $i=0 ; $i<55500 ; $i++){
   $nowDt = Carbon::now();
   $nowDt->timezone = 'Europe/London';
   $nowDt->addMinutes($faker->numberBetween(25,55));
   $this->command->info("ARRIVAL : ". $nowDt);
   $departure = $nowDt->addMinutes($faker->numberBetween(35,45));
   $this->command->info("DEPARTURE : ". $departure);
   $region->entities()->attach($random_entity,[
            'arrival'       => $nowDt,
            'departure'     => $departure,
            'created_at'    => Carbon::now(),
            'updated_at'    => Carbon::now()
        ]);
   }

奇妙なことに、コンソールに出力されるメッセージは次のとおりです。

ARRIVAL : 2015-06-11 08:24:29
DEPARTURE : 2015-06-11 09:13:29

しかし、挿入されたデータを見ると、到着と出発はまったく同じ値になっています。

ARRIVAL : 2015-06-11 08:24:29
DEPARTURE : 2015-06-11 08:24:29

ここで何が間違っていますか?

4

1 に答える 1

0

これは、同じ日付オブジェクトを操作しているためです。日付を操作し、現在のオブジェクトを保持する新しいオブジェクトとして返す必要がある場合は、操作するcopy前にメソッドを使用します。それ以外の場合は、操作している同じオブジェクトへの参照が返されます。

この行を変更

$nowDt->addMinutes($faker->numberBetween(35,45));

$nowDt->copy()->addMinutes($faker->numberBetween(35,45));
于 2015-06-11T08:40:10.663 に答える