Любые идеи о том, как отлаживать измененное поле, которое не обновляется? Созданное поле отлично работает.
Я не уверен, какой код вам нужно будет смотреть, поэтому дайте мне знать!
Спасибо
Любые идеи о том, как отлаживать измененное поле, которое не обновляется? Созданное поле отлично работает.
Я не уверен, какой код вам нужно будет смотреть, поэтому дайте мне знать!
Спасибо
Как сказал Anh Pham, поле modified
и created
должно быть DATETIME
, и они также должны иметь значение по умолчанию NULL
, поскольку объясняется в книге CakePHP о предмете.
Вам следует попробовать проверить, не используете ли вы
$this->ModelName->read(NULL, $id);
перед сохранением ваших данных, если вы считаете, что не сделали этого - дважды проверьте его
Скорее всего вы переписываете это поле, отключите поле от объекта, прежде чем сохранять его следующим образом:
unset($user['User']['modified']);
Теперь вы можете сохранить его:
$this->User->save($user);
Это поле должно быть названо "изменено" с типом "datetime". Торт должен автоматически обновить поле для вас. Если вы хотите проверить, просто запросите его или загляните в базу данных.
Проблема также может возникнуть, если вы используете запросы ручного обновления. Поле обновляется только тогда, когда вы используете собственные функции Cake.
В AppModel.php просто напишите следующий код.
public function beforeSave($options = array()) {
parent::beforeSave();
if (isset($this->data[$this->alias]['modified'])) {
unset($this->data[$this->alias]['modified']);
}
if (isset($this->data[$this->alias]['created'])) {
unset($this->data[$this->alias]['created']);
}
}
Это будет работать для всех моделей. Но мы можем сделать это и для отдельных МОДЕЛЕЙ.
Так как мы использовали parent::beforeSave();
в качестве нашей первой строки, поэтому , это может быть перезаписано в каждой отдельной модели.
Благодаря наследованию.
Сегодня у меня такая же проблема, и выяснилось, что поле modified
обновляется только в том случае, если какие-либо изменения были сделаны, иначе поле не будет затронуто.