2016-12-22 3 views
0

Ich möchte eine completedDatetime, die folgt die Datetime im OrderDatetime Feld.Erstellen Sie gesunde Start-und Endtermine mit Nelmio Alice

Fixtures.yml

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

verwendete ich den Code oben in meiner Armaturen-Datei und die Daten einsehen, die folgt.

enter image description here

Gibt es eine Möglichkeit, ein vernünftiges Ergebnis mit faker Daten Kurz Funktionen Schreiben von benutzerdefinierten, um sicherzustellen, in LoadFixtures ??

Antwort

0

Da Sie die Zeichenfolge "orderDatetime" an strtotime() übergeben Funktion gibt es 1970 Jahr zurück und Ihre dateTimeBetween funktioniert wie dateTimeBetween('1970', 'now'). Die Übergabe von Variablen erfolgt mit $orderDatetime. Aber wenn Sie eine solche Variable an dateTimeBetween() übergeben, könnte das zukünftige dateTime passieren, was nicht möglich ist.

Es funktioniert nur, wenn Ihr Auftragsdatum der Vergangenheit ab jetzt:

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

Wenn Sie zukünftige Termine erzeugen wonna dann müssen Sie benutzerdefinierte faker Funktion zum Beispiel erstellen:

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); 
} 

und Verwendung es ist wie folgt:

orderDatetime: <dateTimeThisYear()> 
completedDatetime: '90%? <dateTimeBetweenAfter($orderDatetime, "+1 year")>' 
Verwandte Themen