updateall saveall error debug data associated cakephp

error - saveall cakephp 3



Cómo depurar cuando CakePHP Model:: save() no intenta un INSERT (8)

Guau, dos horas miserables de mi vida perdidas.

Recuerde que su beforeSave() debe volverse true .

Me está costando un tiempo guardar el registro más simple de un modelo llamado ItemView:

if($this->save($this->data)) { echo ''worked''; } else { echo ''failed''; }

Donde $ this-> data es:

Array ( [ItemView] => Array ( [list_id] => 1 [user_id] => 1 ) )

Y mi mesa es:

CREATE TABLE IF NOT EXISTS `item_views` ( `id` int(11) NOT NULL auto_increment, `list_id` int(11) NOT NULL, `user_id` int(11) default NULL, `user_ip` int(10) unsigned default NULL, `created` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED AUTO_INCREMENT=1 ;

Mirando el volcado de consultas en modo de depuración, Cake ni siquiera está intentando un INSERT, así que no tengo idea de cómo depurar.

Cualquier ayuda sería apreciada.


¿Cuál es el nombre del controlador que estás usando?

Igualar el nombre del controlador y el modelo también causa algunos errores. Si está utilizando el controlador de Posts, entonces se debe usar el modelo de Post . Si está utilizando el modelo de Post dentro de otro controlador; di BlogsController luego el modelo de Post debería cargarse de la siguiente manera:

<?php class BlogsController extends AppController { public function index() { $this->loadModel("Post"); //Here I''m loading other model inside blogs controller if($this->request->is(''post'')) { $this->Post->save($this->request->data); } } } ?>


puede ser algo como esto

$this->Model->set($this->data); $errors = $this->Model->validate();// or perhaps validationError(), please confirm if(!$errors) { $this->Model->save(); }else{ //show errors pr($errors); }


Para depurar Model-> save () compruebe los errores de validación y la última consulta sql

$this->Model->save($data); debug($this->Model->validationErrors); //show validationErrors debug($this->Model->getDataSource()->getLog(false, false)); //show last sql query


El mismo problema aqui. Perdí 2 horas de mi vida.

Solución: me olvido de esto:

array(''post'', ''put'')


Puede ser, Validations devuelve falso .. Puede verificar como

$this->Model->save($this->data, false);

Ponga "falso" y compruebe si ahora los datos se insertan, si es así, es un error de validación


En cakephp 3.x, puede depurar durante la inserción / actualización

if ($this->TableName->save($entity)) { // success } else { // if not save, will show errors debug($entity->errors()); }


Lo que siempre me atrapa es que si modifico la tabla real (generalmente añadiéndole atributos), entonces debe vaciar su caché. Por lo general, borrar todo dentro de las dos carpetas siguientes me convence:

tmp > cache > models tmp > cache > persistent