Laravel 碳日期未在 Seeder 中修改
Laravel Carbon dates not getting modified in Seeder
在 Laravel 播种机中,我试图获取一个 Faker
生成的日期,将其转换为 Carbon,然后获取两个仅相隔几个小时的日期以表示一个 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),
]);
}
尝试这样做:$end = $end->addHours(4);
或先克隆它。
我认为这是因为 $start 和 $end 都引用了同一个 Carbon 对象。尝试创建两个不同的 $dateTime 对象 - $startDateTime 和 $endDateTime - 间隔几个小时并将它们分别引用到 $start 和 $end。
您正在将 $start
和 $end
分配给同一对象 $dateTime
。因为它们都是同一个对象,当你改变一个时,另一个也会改变。最简单的事情是克隆对象,然后 addHours()
到克隆:
$start = Carbon::instance($randomDate)->minute(0)->second(0);
$end = clone $start;
$end->addHours(4);
现在您应该有两个不同的对象,一个 $start
和一个 $end
,时间间隔为 4 小时。
在 Laravel 播种机中,我试图获取一个 Faker
生成的日期,将其转换为 Carbon,然后获取两个仅相隔几个小时的日期以表示一个 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),
]);
}
尝试这样做:$end = $end->addHours(4);
或先克隆它。
我认为这是因为 $start 和 $end 都引用了同一个 Carbon 对象。尝试创建两个不同的 $dateTime 对象 - $startDateTime 和 $endDateTime - 间隔几个小时并将它们分别引用到 $start 和 $end。
您正在将 $start
和 $end
分配给同一对象 $dateTime
。因为它们都是同一个对象,当你改变一个时,另一个也会改变。最简单的事情是克隆对象,然后 addHours()
到克隆:
$start = Carbon::instance($randomDate)->minute(0)->second(0);
$end = clone $start;
$end->addHours(4);
现在您应该有两个不同的对象,一个 $start
和一个 $end
,时间间隔为 4 小时。