Вы близки, но вы не можете просто add()
так, потому что дата в массиве данных не DateTime объекта Тем не менее, это просто простая строка. Если вы перенёте его как таковой, все будет хорошо. Итак:
// Create a DateTime object from the date in the data array
$date = new DateTime($this->request->data['Bill']['date']);
Или если у вас есть день/месяц/год выпадающие вместо поля ввода текста:
$date = new DateTime(implode('-', array(
$this->request->data['Bill']['date']['year'],
$this->request->data['Bill']['date']['month'],
$this->request->data['Bill']['date']['day']
)));
Тогда у вас есть объект DateTime, и вы можете добавить день к нему:
// Add a day to this object
$date->add(new DateInterval('P1D');
Если вы хотите, то эту новую дату, чтобы переопределить старый, вы можете сделать что-то вроде этого, чтобы сохранить новую дату:
$this->request->data['Bill']['date'] = $date->format('Y-m-d');
Спасибо за ваш ответ :) К сожалению, я получаю это 'DateTime :: __ construct() ожидает, что параметр 1 будет строкой, массив задан', поскольку CakePHP обрабатывает его как 'array'. Есть идеи? – doonot
@doonot У вас, вероятно, есть раздельные выпадающие дни в день/месяц/год, созданные FormHelper? Обновил мой ответ, чтобы освежить эту ситуацию. – Oldskool
@ Oldskool Существует также [** 'Model :: deconstruct()' **] (http://api.cakephp.org/2.6/class-Model.html#_deconstruct) – ndm