Laravel,Faker - 增量生成日期时间

时间:2014-11-02 14:32:09

标签: php datetime laravel increment faker

我在播种机中使用Faker软件包为培训活动生成假数据。

每个活动都有starts_atends_at个字段。我想在ends_at字段中填入DateTime字段,该starts_at字段位于为{{1}}生成的字段之后,最好是1到8小时,或者甚至固定的1小时差异就可以了。< / p>

2 个答案:

答案 0 :(得分:4)

调整Build APIs You Won't Hate中描述的模式并使用精彩的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 ) )
            ]);
        }
    }
}

答案 1 :(得分:4)

这是一种定义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 ) );