2016-12-22 55 views
0

に続くcompletedDatetimeを、のorderDatetimeフィールドのdatetimeの後に作成したいとします。nelmio aliceを使用して開始日と終了日を作成する

Fixtures.yml

directive_{200..500}: 
    orderDatetime: <dateTimeThisYear()> 
    completedDatetime: '90%? <dateTimeBetween("orderDatetime", "now")>' 

は、私は私の備品ファイルに上記のコードを使用して、以下のデータを得ました。

enter image description here

LoadFixturesでカスタム関数を書くの短い偽物データを使用してまともな結果を確実にする方法はありますか?

答えて

0

文字列「orderDatetime」をstrtotime()関数に渡すので、それは1970年を返し、dateTimeBetweendateTimeBetween('1970', 'now')のように機能します。変数の受け渡しは$orderDatetimeで行います。しかし、そのような変数をdateTimeBetween()に渡すと、将来のdateTimeが渡されてしまう可能性があります。

ご注文日が過ぎている場合にのみ、今から動作します。

orderDatetime: '<dateTimeBetween("-200 days", "now")>' 
completedDatetime: '90%? <dateTimeBetween($orderDatetime, "now")>' 

あなたが未来の日付を生成wonnaなら、あなたは、例えば、カスタム偽物関数を作成する必要があります。

public function dateTimeBetweenAfter($dateFrom, $dateTo) 
{ 
    $date = new DateTime($dateFrom->format('Y-m-d H:i:s')); 
    $dateTo = $date->modify($dateTo); 

    return FakerDateTime::dateTimeBetween($dateFrom, $dateTo); 
} 

と使用このように:

orderDatetime: <dateTimeThisYear()> 
completedDatetime: '90%? <dateTimeBetweenAfter($orderDatetime, "+1 year")>' 
関連する問題