【问题标题】:Laravel Carbon dates not getting modified in SeederLaravel Carbon 日期未在 Seeder 中修改
【发布时间】:2017-06-27 23:36:34
【问题描述】:

在 Laravel Seeder 中,我试图获取 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),
                ]);
            }

【问题讨论】:

    标签: laravel date parsing php-carbon laravel-seeding


    【解决方案1】:

    我认为这是因为 $start 和 $end 都引用了同一个 Carbon 对象。尝试创建两个不同的 $dateTime 对象 - $startDateTime 和 $endDateTime - 相隔几个小时,并将它们分别引用到 $start 和 $end。

    【讨论】:

      【解决方案2】:

      尝试这样做:$end = $end-&gt;addHours(4); 或先克隆它。

      【讨论】:

      • 我试过了,但没有用。我使用了下面的解决方案。
      【解决方案3】:

      您将$start$end 分配给同一个对象$dateTime。因为它们都是同一个对象,所以当你改变一个时,另一个也会改变。最简单的方法是克隆对象,然后将addHours() 复制到克隆中:

      $start = Carbon::instance($randomDate)->minute(0)->second(0);
      $end = clone $start;
      $end->addHours(4);
      

      现在您应该有两个不同的对象,一个 $start 和一个 $end,时间相隔 4 小时。

      【讨论】:

      • 这个解决了我的问题!
      • @jdcarg 太好了!请考虑接受它作为您问题的答案,以便任何有类似问题的人都能看到对您有用的方法。
      猜你喜欢
      • 2016-12-01
      • 2016-04-30
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多