[英]Laravel, Faker - Increment generated dateTime
我在 Seeder 中使用 Faker 包为训练事件生成假数据。
每个事件都有starts_at
和ends_at
字段。 我想用在为starts_at
生成的DateTime
之后填充ends_at
字段,最好是 1 到 8 小时,甚至固定的 1 小时差异也可以。
这是定义ends_at的简单方法
$starts_at = Carbon::createFromTimestamp($faker->dateTimeBetween($startDate = '+2 days', $endDate = '+1 week')->getTimeStamp()) ;
$ends_at= Carbon::createFromFormat('Y-m-d H:i:s', $starts_at)->addHours( $faker->numberBetween( 1, 8 ) );
改编你不会讨厌的构建 API 中描述的模式并使用很棒的Carbon包,你可以这样做:
<?php
use Carbon\Carbon;
use Faker\Factory as Faker;
class UserEventsTableSeeder extends Seeder {
public function run() {
$faker = Faker::create();
foreach (range(1, 15) as $index) {
$startDate = Carbon::createFromTimeStamp($faker->dateTimeBetween('-1 years', '+1 month')->getTimestamp());
UserEvent::create([
// ...
'starts_at' => $startDate->toDateTimeString(),
'ends_at' => $startDate->addHours( $faker->numberBetween( 1, 8 ) )
]);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.