inner - cakephp raw sql query
save() devuelve falso, pero sin error en CakePHP (6)
Mi valor de depuración está configurado en 2
y muestra todas las consultas, excepto la que necesito.
Tengo un método de controlador de Items
que llama a este método en el modelo de User
( elemento pertenece al usuario ):
function add_basic($email, $password) {
$this->create();
$this->set(array(
''email'' => $email,
''password'' => $password
));
if($this->save()) {
return $this->id;
}
else {
return false;
}
}
He confirmado que $email
y $password
se pasan a la función correctamente (y se completan con datos fidedignos). email
y password
son los nombres de los campos en el modelo de User
.
También he confirmado que en $this->save()
devuelve false
, pero cuando veo la página donde ocurre esto, la consulta no se imprime en la depuración y no se produce ningún error, por lo que no tengo idea de lo que está yendo mal.
¿Alguna idea sobre cómo puedo ver el error o por qué parece que la consulta no se está ejecutando?
Es extraño, porque justo después de esto, tengo otro modelo que le guarda datos exactamente de la misma manera, funciona sin problemas.
¿Tiene un beforeValidate()
o beforeSave()
en el modelo o modelo de aplicación? Si es así, ¿están regresando verdad? En su defecto, utilice un depurador, establezca un punto de interrupción en su IDE en la parte superior del método cake / libs / models / model.php save()
y recorra el código hasta que devuelva falso. Al fallar, agregue el die(''here'');
llamadas.
Asegúrese de verificar sus tablas:
- ¿El
ID
tiene el incremento automático habilitado? - ¿Es
id
tu clave principal?
los problemas de autoincremento me mataron. Manera fácil de verificar: si alguna de sus filas tiene ID = 0, es probable que el auto_increment esté deshabilitado.
Esto probablemente le proporcione la información que necesita (suponiendo que no se guarde debido a datos no válidos, por supuesto):
if(!$this->save()){
debug($this->validationErrors); die();
}
La otra situación donde CakePHP no informa ningún $this->Model->validationErrors
y no hay otros errores potencialmente cuando $this->request->data
no es como Cake espera y simplemente está ignorando sus datos, no guardando, sin validación errores Por ejemplo, si sus datos fueron provistos por DataTables, es posible que vea este formato $this->request->data[0][''Model''][''some_field'']
.
$this->Model->save($this->request->data[0])
funcionará sin embargo.
Prueba esto:
if ($this->save()) {
return $this->id;
}
else {
var_dump($this->invalidFields());
return false;
}
contiene la matriz validationErrors
if ($this->save()) {
return $this->ModelName->id;
}
else {
debug($this->ModelName->invalidFields());
return false;
}