2016-12-22 4 views
0

Я хочу создать завершенное время, в течение которого следует datetime в поле orderDatetime.Создать правильную дату начала и окончания с nelmio alice

Fixtures.yml

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

Я использовал код, указанный выше в моем файле светильники и получили данные, которые следует.

enter image description here

Есть ли способ, чтобы обеспечить вменяемый результат, используя данные Факер короткие записи пользовательских функций в LoadFixtures ??

ответ

0

Поскольку вы проходите строку «orderDatetime» до strtotime(), функция возвращает 1970 год, а ваш dateTimeBetween работает как dateTimeBetween('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")>' 
Смежные вопросы