4

我在我的 Seeder 中使用 Faker 包为训练事件生成假数据。

每个事件都有starts_atends_at字段。我想用在为 生成的字段之后填充ends_at字段,最好是 1 到 8 小时,甚至固定的 1 小时差异也可以。DateTimestarts_at

4

2 回答 2

8

这是定义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 ) );
于 2016-03-11T16:10:47.720 回答
6

调整你不会讨厌的构建 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 ) )
            ]);
        }
    }
}
于 2014-11-02T17:22:21.683 回答