gracias por ayudarme, pero mire como me trae el arreglo:Array( [Norma] => Array ( [nombrenormas] => XXX [detallesnormas] => YYYY )
[Dominio] => Array ( [nombredominios] => 1.-XXX. ) [Objetivogeneral] => Array ( [nombreObjetivo] => YYYY ) [Objetivoespecifico] => Array ( [nombreObjetivoE] => XXXX ) )me inserta normas pero no inserta dominio ni ninguna de las demas...como recorro al dominio y le asigno la clave foranea de normas para que lo guarde en mi modelo de Dominio???osea, para que se inserte el dominio debe ser algo como así:( [Norma] => Array ( [nombrenormas] => XXX [detallesnormas] => YY ) [Dominio] => Array ( [nombredominio] => 1XX [Norma_id] => 02 ) [Objetivogeneral] => Array ( [nombreObjetivo] => xxxx [Dominio_id] => 04 ) en el controlador hago esto:function add() { if (!empty($this->data)) { $name_file = $this->data['Upload']['file']['name']; $url = WWW_ROOT . 'files//'.$name_file; //url: es la ruta donde se encuentra almacenado el archivo cargado desde el form. if ($this->FileUpload->success) { $this->set('file', $this->FileUpload->finalFile); $read = new ExcelFiler(); //instancia de la clase que se encarga de leer el archivo $read->read_file($url); $product = $read->read_file($url); if (!empty($product)) { // Data que retorna la clase excelFile $norma = new Norma(); //Instancia donde se guarda el array retornado de la clase ExcelFiler $dominio = new Dominio(); $dominio->save($product); pero, tengo que meterme en el arreglo y agregar una etiqueta con un campo (Norma_id) y decirle que ese dominio esta relacionado con una Norma XXX...pero en realidad nunca soy nueva con ciclos y recorridas de arrays..... Date: Wed, 16 Mar 2011 08:27:54 -0430 Subject: Re: [CakePHP-es] Leer Archivo de Excel e insertar su contenido From: rcamposw...@gmail.com To: cakephp-es@googlegroups.com 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 <mayuli14_adri...@hotmail.com> 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: rcamposw...@gmail.com To: cakephp-es@googlegroups.com 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 <mayuli14_adri...@hotmail.com> 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 conla 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 cakephp-es@googlegroups.com. Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-es+unsubscr...@googlegroups.com 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 cakephp-es@googlegroups.com. Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-es+unsubscr...@googlegroups.com 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 cakephp-es@googlegroups.com. Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-es+unsubscr...@googlegroups.com 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 cakephp-es@googlegroups.com. Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-es+unsubscr...@googlegroups.com 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 cakephp-es@googlegroups.com. Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-es+unsubscr...@googlegroups.com Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-es?hl=es.