Моя форма имеет 2 поля - Time_from и Time_toDateTime добавить 1 день
Теперь мне нужно, чтобы добавить запись в моей базе данных на каждый день (если Theres разница между этими дней) отл. Time_from = 2013-08-26 8:00:00 и Time_to = 2013-08-28 16:00:00 Так в моей базе данных я должен получить 3 записей
Time_from = 2013-08-26 08:00:00 and Time_to = 2013-08-26 16:00:00
Time_from = 2013-08-27 08:00:00 and Time_to = 2013-08-27 16:00:00
Time_from = 2013-08-28 08:00:00 and Time_to = 2013-08-28 16:00:00
Таким образом, для этой цели я сделал метод, где я сначала нахожу разницу между этими двумя датами, а затем я использую цикл for, который будет работать столько дней в разнице, что и у двух дат, и в конце концов я просто добавляю 1 день.
public function createOffer($offer)
{
$time_from = new DateTime($offer->time_from);
$time_to = new DateTime($offer->time_to);
$interval = $time_from->diff($time_to);
for ($counter = 0; $counter <= $interval->d; $counter++) {
$offer->time_from = $time_from->format('Y-m-d H:i:s');
$offer_time_to = new DateTime($time_from->format('Y-m-d'));
$offer_time_to->setTime($time_to->format('H'), $time_to->format('i')
, $time_to->format('s'));
$offer->time_to = $offer_time_to->format('Y-m-d H:i:s');
if ($offer->validate()) {
$offer->save();
}
date_modify($time_from, '+1 day');
}
}
По какой-то причине код не работает.
Когда я удалить date_modify поле только первый день будет сохранен в моей базе данных (Угадай цикл работает только один раз в то время)
Но с date_modify в моем коде, только в последний день сохраняется в базы данных.
$ interval-> d нет никакой разницы «дней», всего за несколько часов, в указанное время, так что цикл будет выполняться только один раз – Anigel
Так разницу между днями показывается только часы? – CreamYGEEK
http://phpfiddle.org/main/code/3r1-6hc вы уверены, что не хотите $ interval-> h, а не interval-> d – Anigel