0

Laravel Seeder で、Faker生成された日付を取り、それを Carbon に変換してから、わずか数時間離れた 2 つの日付を取得して 4 時間のセッションを表そうとしています。例えば、 Start Date: 03/13/2016 12:00PM
End Date: 03/13/2016 5:00PM

以下は私が着陸したものですが、変数$start$end変数は常に同じです。

            for ($k = 0; $k < $jobAssignmentCount; $k++) {
                $randomDate = $faker->dateTimeBetween($job->starts_at, '+6 months');
                $dateTime = Carbon::instance($randomDate)->minute(0)->second(0);
                $start = $dateTime;
                $end = $dateTime;
                $end->addHours(4);
                $jobAssignment = JobAssignment::create([
                    'job_id' => $job->id,
                    'starts_at' => $start,
                    'ends_at' => $end,
                    'assignment_notes' => 'Assignment Notes',
                    'is_cancelled' => $faker->boolean(10),
                    'cancelled_at' => $faker->dateTimeBetween('+6 months', '+1 year'),
                    'cancelled_by_profile_id' => $profile->id,
                    'is_billable' => $faker->boolean(75),
                ]);
            }
4

3 に答える 3

1

$start と $end の両方が同じ Carbon オブジェクトを参照しているためだと思います。$startDateTime と $endDateTime という 2 つの異なる $dateTime オブジェクトを数時間間隔で作成し、それぞれ $start と $end を参照してみてください。

于 2016-03-13T16:49:32.360 に答える