2014-11-02 4 views
2

나는 내 Seeder에서 Faker 패키지를 사용하여 교육 이벤트에 대한 가짜 데이터를 생성합니다.Laravel, Faker - 증가 된 생성 날짜 시간

각 이벤트의 필드는 starts_atends_at입니다. ends_at 필드를 starts_at, 바람직하게는 1 - 8 시간에 대해 생성 된 DateTime 다음에 채우거나 1 시간 차이가 고정 되어도 괜찮습니다.

답변

3

을 실제로 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)); 
3

여기, 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)) 
      ]); 
     } 
    } 
} 
+0

을 정의 할 수있는 쉬운 방법이다, Raphael_, 귀하의 코드를 실행할 때이 오류가 발생합니다 :'DateTime :: __ construct() 기대하는 매개 변수 1 문자열, 주어진 된 개체'. 전체 오류 로그는 다음과 같습니다. http://laravel.io/bin/Jx34w 여기 전체 시드 파일이 있습니다. http://laravel.io/bin/QN9x4 –

+0

이제 작동해야합니다. 시도해보십시오. – rmobis

+0

'starts_at' 필드에'0000-00-00 00 : 00 : 00'을 삽입합니다. ''starts_at '=> $ startDate-> timestamp,''starts_at'=> $ startDate,''로 변경하면 같은 날짜와 시간이'starts_at'와'ends_at'에 나타납니다. 여기 내 시더가 있습니다 : http://laravel.io/bin/Mk5KO –