Laravel, Faker — сгенерированный инкремент dateTime

Я использую пакет Faker в своем сеялке, чтобы генерировать поддельные данные для учебных мероприятий.

Каждое событие имеет starts_at а также ends_at поля. Я хочу заселить ends_at поле с DateTime то есть после того, что сгенерировано для starts_atпредпочтительно от 1 до 8 часов или даже с фиксированной разницей в 1 час.

2

Решение

вот простой способ определить окончание

$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 ) );
4

Другие решения

Адаптация шаблона, описанного в Создавайте API, которые вы не будете ненавидеть и используя удивительный углерод пакет, вот как вы можете это сделать:

<?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 ) )
]);
}
}
}
4

По вопросам рекламы [email protected]