cakephp - save () возвращает false, но без ошибок в CakePHP




3 Answers

Это, вероятно, даст вам необходимую информацию (при условии, что она не будет сохранена из-за неверных данных, конечно):

if(!$this->save()){
    debug($this->validationErrors); die();
}

Мое значение отладки установлено равным 2 , и оно отображает все запросы, кроме тех, которые мне нужны.

У меня есть метод контроллера Items который вызывает этот метод в модели User ( элемент принадлежит пользователю ):

function add_basic($email, $password) {
    $this->create();

    $this->set(array(
        'email' => $email,
        'password' => $password
    ));

    if($this->save()) {
        return $this->id;
    }
    else {
        return false;
    }
}

Я подтвердил, что $email и $password передаются в функцию правильно (и заполняются законными данными). email и password - это имена полей в модели User .

Я также подтвердил, что в $this->save() он возвращает false , но когда я просматриваю страницу, где это происходит, запрос не печатается в отладке, и не возникает ошибки, поэтому у меня нет идея идет не так.

Любые идеи о том, как я могу увидеть ошибку, или почему запрос, похоже, не выполняется?

Это странно, потому что сразу после этого у меня есть еще одна модель, которая сохраняет данные в точности точно так же, как без проблем.




У вас есть beforeValidate() или beforeSave() в модели или модели приложения? Если они вернутся? В противном случае используйте отладчик, установите точку прерывания в своей среде IDE в верхней части метода cake / libs / models / model.php save() и выполните код, пока он не вернет значение false. В противном случае добавьте die('here'); звонки.




Обязательно проверьте свои таблицы:

  • Включен ли ID автонастройки?
  • Является ли ваш основной ключ?

проблемы auto_increment убили меня. Простой способ проверить: если какая-либо из ваших строк имеет ID = 0, auto_increment, скорее всего, отключен.




Related

cakephp cakephp-appmodel