Estoy haciando mis primeros insert en cakephp y ahora tengo un problema, bah gracias a un error me surgió esta duda:
Tengo 3 tabla:
usuarios, telefonos_usuarios, telefonos_inmobiliarias
el modelo de "usuario" puse una relación has many con las otras 2 tablas
Código PHP:
var $hasMany = array(
'TelefonosUsuario' => array(
'className' => 'TelefonosUsuario',
'foreignKey' => 'usuario_id'
),
'TelefonosInmobiliaria' => array(
'className' => 'TelefonosInmobiliaria',
'foreignKey' => 'usuario_id'
));
Al cargar manualmente los datos en las 3 tablas me funciona bien el select, se puebla correctamente mi formulario y hace bien también el update, el tema es que para los campos de los teléfonos en el formulario los genero con un loop for porque tienen muchos teléfonos (eso lo trae bien) pero recien eliminé los datos para que haga un insert desde el controlador y como el array de teléfonos no tiene nada no tenia campos para poder rellenar, entonces en el controlador pregunté si el array de telefonos no es array le agrego ese array telefonos (asi aparece el campo en formulario), aparece el campo pero me confundi en el tema de indices, entonces al enviar para hacer el insert vi la consulta que generó de esta forma
INSERT INTO `telefonos_inmobiliarias` (`id`, `numero`) VALUES (Array, Array)
el error es que no conoce la columna Array
al comenzar la consulta cakephp me genera
-START TRANSACTION
-el insert de usuarios
-insert de telefonos_inmobiliarias
y el ROLLBACK
bien digo, hizo un rollback
pero cuando voy a la base de datos tenia el registro en la tabla clientes... ¿porque queda el registro de clientes si hace ROLLBACK ???
El error que tenía ya lo solucioné creando bien los indices del array pero me gustaría saber como hacer bien el rollback ya que yo no lo hago lo hace cakephp, uso el método saveAll
Me fuí a volver a repasar la doc. Me vengo a responder yo solo jeje
Cita: Para que las transacciones funcionen correctamente en MySQL, tus tablas han de usar el mecanismo InnoDB. Recuerda que las tablas MyISAM no soportan transacciones.
ok no lo recordaba jaja