在 Laravel 中使用 faker 生成数据时如何设置两个变量以获得相同的值

How to set two variables to get the same value while generating data using faker in Laravel

我有一个用于生成事件的工厂

public function definition()
{
  return [
      'event_type' => $this->faker->randomElement(['class','event']),
      'event_name' => $this->faker->sentence(1,2),
      'date' => $this->faker->dateTimeBetween($startDate = '+1 days', $endDate = '+5 days'),
      'start_time' => $this->faker->dateTimeBetween('+0 hours', '+2 hours'),
      'end_time' => $this->faker->dateTimeBetween('+3 hours', '+10 hours'),
  ];
}

这里我需要 start_timedatedate

中生成相同的值

例如 date='2003-03-15 02:00:49'。我希望 start_time 成为 02:00:49 但我得到了一些其他值,因为它是随机生成的。

注意:date是时间戳,start_time是数据库中的时间格式

您可以通过先将 faker 数据放入变量来重新使用 faker 数据,并通过调用其 getTimestamp() 方法获取 DateTime 对象的时间戳:

public function definition()
{
  $date = $this->faker->dateTimeBetween($startDate = '+1 days', $endDate = '+5 days');
  return [
      'event_type' => $this->faker->randomElement(['class','event']),
      'event_name' => $this->faker->sentence(1,2),
      'date' => $date->getTimestamp(),
      'start_time' => $date,
      'end_time' => $this->faker->dateTimeBetween('+3 hours', '+10 hours'),
  ];
}