Estas en lo correcto, lo que tienes de dominar es la construccion del
arreglo y ciclos  para que puedas realizar correctamente la insercion.

Normalmente yo construyo una vista sencilla con todos los campos que debo
tener para cuando realice $this->save lo haga correctamente. De esta manera
verifico la consistencia y que las relaciones funcionan en cake.

Luego genero ese arreglo, como lo necesita cake, luego procedo a salvar y me
funciona.

Cuando no uso vistas procedo a enviarlo por parametros y ejecuto el
$this->query a mi conveniencia y lo hace correctamente tambien, a excepcion
cuando lo tengo dentro de un for, que estoy buscando la manera de
resolverlo.

Espero haberte ayudado.

Saludos.


El 16 de marzo de 2011 07:44, mayuli plaza gonzalez <
[email protected]> escribió:

>
> hola amigo, gracias por responderme...
> ya hice el paso 1 y 2 pero cuando hago en insert en cada modelo no se
> inserta...
> ejemplo:
> desde el archivo excel yo leo toda la informacion pero dicha informacion va
> almacenada en distintos modelo o tablas de mi base de datos
> de verdad no se cómo extraer esa informacion que ya tengo, porq creo que el
> rollo es de  trabajar con array y ciclos...
> por ejemplo que recorra el modelo de Norma y lo inserte (luego siga
> recorriendo y encuentre el dominio y lo inserte *ASociado* a esa Norma, y
> luego recorra a Objetivos y lo inserte *asociado* a Dominio) y asi
> sucesivamente con lo demas.
>
> Lo único que he logrado hacer es Insertar Norma Perfectamente pero los
> demas registros asociados no se insertan...
> No se si me explico....
>
>
>
> ------------------------------
> Date: Tue, 15 Mar 2011 19:49:16 -0430
> Subject: Re: [CakePHP-es] Leer Archivo de Excel e insertar su contenido
> From: [email protected]
> To: [email protected]
>
>
> Hola,
>
> Trato de ayudarte, me considero novato en algunas cosas, no he realizado
> especificamente lo que indicas, pero he realizado algo parecido, yo hago lo
> siguiente:
>
> Primer Paso: Proceso lo que necesite dentro de mi controlador, en tu caso
> la lectura del archivo excel y construyo el arreglo.
>
> Segundo Paso: En el controlador agrego al resultado del Primer paso lo que
> me haga falta con la logica que yo necesite, en tu caso aqui agregaria el
> norma_id.  Si ya tienes experiencia lo puedes hacer en el paso 1, es
> indistinto, lo que importa es que generes el arreglo que necesitas para que
> cake lo pueda insertar. Esto lo debes de pasar a la vista del formulario
> haciendo uso del $this->set para que puedas hacer el $this->data de cake.
>
> Si son muchos registros y no vas a usar vistas puedes llamar a un for que
> te inserte los registros invocando a un insert que contruyas en tu modelo,
> esto funciona pero actualmente tengo problemas con el $this->query(insert
> into)  porque me graba  registros duplicados en la base de datos aunque lo
> llame una vez, estoy tratando de ver como puedo insertar a traves de cake y
> no usando el $this->query
>
> SAludos,
> Reinaldo
>
> El 15 de marzo de 2011 11:24, mayuli plaza gonzalez <
> [email protected]> escribió:
>
>  Hola Comunidad, estoy leyendo de un archivo excel el contenido que debe ser 
> insertado en una base de datos, Sin embargo tengo un pequeño problema con
>
> la clave foránea de los modelos. y no se insertan en las tablas....
>
> por ejemplo el Dominio está asociado a Norma ¿pero cómo le asigno el idNormas 
> al modelo Dominio automáticamente si no es leído desde el archivo de excel ?
>
>
> hice un for que recorre el archivo de excel de esta manera:
>
> for ($i = 0; $i < 2; $i++) {                                                  
>                       for( $j = 0; $j < 2; $j++) {                            
>                                         
>                               $product[$root_headers[0]][$norma_headers[$j]] 
> = $data->sheets[0]['cells'][$i + 1][$j + 1];
>                               
>                               for ($k = 0; $k < 4; $k++) {    
>                                       for( $l = 0; $l < 3; $l++) {
>                                               
> $product[$rootDominio_headers[0]][$dominio_headers[0]] = 
> $data->sheets[0]['cells'][$k + 1][$l + 1];
>                                               
>                                               for ($m = 0; $m < 6; $m++) {    
>                                                       for( $n = 0; $n < 4; 
> $n++){
>                                                               
> $product[$rootObjGral_headers[0]][$objGral_headers[0]] = 
> $data->sheets[0]['cells'][$m + 1][$n + 1];
>                                                               
>                                                               for ($o = 0; $o 
> < 8; $o++) {    
>                                                                       for( $p 
> = 0; $p < 5; $p++){
>                                                                               
> $product[$rootObjEsp_headers[0]][$objEsp_headers[0]] = 
> $data->sheets[0]['cells'][$o + 1][$p + 1];
>                                               
>                                                       }
>                                               }
>                                                               
>                                               
>                                                       }
>                                               }
>                                       }
>
>                               }               
>                       }
>                       
>               }
>               pr($product); exit();
>               return $product;
>
> y al imprimir la variable $product me imprime lo siguiente:
>
> Array
>
> ( [Norma] => Array
>         (
>             [nombrenormas] => Los Mandamientos
>             [detallesnormas] => Leyes Religiosas
>         )
>
>     [Dominio] => Array
>         (
>             [nombredominios] => 1.-Amar a Dios sobre todas las Cosas.
>         )
>
>     [Objetivogeneral] => Array
>         (
>             [nombreObjetivo] => 1.1-Ama a tu prójimo como a ti mismo
>         )
>
>     [Objetivoespecifico] => Array
>         (
>             [nombreObjetivoE] => 1.1.1 Con toda la mente y con todo el corazón
>         )
>
> )
>
>
>  pero no deberia estar asi, sino que en cada modelo le debo asignar su
> respectiva asociación. Por ejemplo digo yo que sería así:
>
> Array
>
> ( [Norma] => Array
>         (
>             [nombrenormas] => Los Mandamientos
>             [detallesnormas] => Leyes Religiosas
>         )
>
>     [Dominio] => Array
>         (
>             [nombredominio] => 1. - Amar a Dios Sobre todas las cosas
>
>             [*Norma_id*] => 02
>
> )
>
>
>     [Objetivogeneral] => Array
>         (
>             [nombreObjetivo] => 1.1-Ama a tu prójimo como a ti mismo
>
>             [*Dominio_id*] => 04
>
>
>         )
>
>     [Objetivoespecifico] => Array
>         (
>             [nombreObjetivoE] => 1.1.1 Con toda la mente y con todo el corazón
>
>             [*ObjetivoGeneral_id*] => 06
>
>       
>         )
>
> *pero no se cómo ni donde hacerlo.... en el ciclo for de la clase
> MY_READER_excel? o en el Controlador al Cargar el Archivo?.... *
> *Bueno, no se si me puedan ORIENTAR.... gracias...*
>
>
>
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>
>
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>

-- 
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a 
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a 
[email protected]
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a