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


Answers

содержит массив validationErrors

if ($this->save()) {
    return $this->ModelName->id;
}
else {
    debug($this->ModelName->invalidFields());
    return false;
}
Question

Мое значение отладки установлено равным 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 , но когда я просматриваю страницу, где это происходит, запрос не печатается в отладке, и не возникает ошибки, поэтому у меня нет идея идет не так.

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

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




Попробуй это:

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



Другая ситуация, когда CakePHP не сообщает о каких-либо $this->Model->validationErrors и никакие другие ошибки не являются потенциально возможными, когда данные $this->request->data не такие, как Cake, и просто игнорируют ваши данные, а не сохраняют, не проверяют ошибки. Например, если ваши данные были предоставлены DataTables, вы можете увидеть этот формат $this->request->data[0]['Model']['some_field'] .

$this->Model->save($this->request->data[0]) будет работать.




Related