Foros del Web » Programando para Internet » PHP » Zend »

Mapear columnas a propiedades de un objeto

Estas en el tema de Mapear columnas a propiedades de un objeto en el foro de Zend en Foros del Web. Hola comunidad, Por fin me he decidido a empezar a estudiar Zend Framework gracias a los videotutoriales de pablofmorales . Aqui viene mi primera duda. ...
  #1 (permalink)  
Antiguo 07/10/2011, 17:42
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Mapear columnas a propiedades de un objeto

Hola comunidad,

Por fin me he decidido a empezar a estudiar Zend Framework gracias a los videotutoriales de pablofmorales.

Aqui viene mi primera duda.

Yo tengo una clase Comentario, esta clase contiene las propiedades autor, contenido, articulo_padre, entre otras y tambien tengo otra clase que se llama, por ejemplo, ManejarComentarios que extiende de Zend_Db_Table_Abstact, que se encarga de insertar, borrar, buscar, los comentarios en la base de datos.
Yo quiero que al yo usar el metodo Zend_Db_Table_Abstract::insert() por ejemplo, yo pasarle un objeto de tipo Comentario y el se encargue de hacer el mapeo e insercion a la base de datos sabiendo que las propiedades de mi objeto Comentario no tienen el mismo nombre que mis campos en la base de datos (aunque siguen una convencion mis propiedades en mis clases).

Sabria como hacerlo sin usar Zend para depender de esto pero me preguntaba si Zend ofrece alguna manera directa de hacerlo.

Es decir, puedo sobreescribir el metodo y hacer:
Código PHP:
Ver original
  1. public function insert(Comentario $objetoComentario) {
  2.     $datosInsert = array(
  3.         'autor' => $objetoComentario->getAutor()
  4.     );
  5.     //Llamo a mi insertar
  6. }

Y tambien que Zend se encargue de hacer las relaciones dependiendo de las llaves foraneas de la tabla. El concepto que busco es a lo que hacen los ORM.

Es posible? Alguna documentacion, enlace, tutorial, libro:P?

EDIT: Aprovecho el tema para preguntar, donde coloco mis interfaces para que Zend las encuentre y yo solo tener que implementarlas en mis modelos?

Última edición por Ronruby; 07/10/2011 a las 17:48
  #2 (permalink)  
Antiguo 07/10/2011, 18:05
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Mapear columnas a propiedades de un objeto

Que tal Ronruby,

Has mirado el Quickstart ?, ten en cuenta que esta algo desfasado, el namespace para el mapper existe, esto Application_Model_GuestbookMapper debería ser esto Application_Model_Mapper_Guestbook

Con respecto a las interfaces, es igual que cualquier clase, Zend sigue el PEAR naming convention,


class Application_Model_Mapper_User --> application/models/mapper/User.php
interface Application_Model_Mapper_Inferface --> application/models/mapper/Interface.php

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 07/10/2011, 18:43
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mapear columnas a propiedades de un objeto

Cita:
Iniciado por masterpuppet Ver Mensaje
Que tal Ronruby,

Has mirado el Quickstart ?, ten en cuenta que esta algo desfasado, el namespace para el mapper existe, esto Application_Model_GuestbookMapper debería ser esto Application_Model_Mapper_Guestbook

Con respecto a las interfaces, es igual que cualquier clase, Zend sigue el PEAR naming convention,


class Application_Model_Mapper_User --> application/models/mapper/User.php
interface Application_Model_Mapper_Inferface --> application/models/mapper/Interface.php

Saludos.
Genial! Justo lo que buscaba. Un saludo @masterpuppet.

Seguire enviciandome con Zend (adios CodeIgniter)
  #4 (permalink)  
Antiguo 08/10/2011, 08:58
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Mapear columnas a propiedades de un objeto

Solo para añadir, debes asegurarte de que la primera letra de cada archivo esté en mayúsucula, por lo menos en window no te dará problemas, pero cuando pases a ambiente linux sí te dará problemas, lo digo porque me pasó . Los directorios que ya tiene declarado Zend, no importa como lo llames, pero los directorios que tú declares debes colocarlo con la primera letra en mayúscula, ejemplo

Application_Model_Mapper_User_Add -> application/models/mapper/User/Add.php
Application_Model_Mapper_User_Edit -> application/models/mapper/User/Edit.php

Si te fijas hasta mapper todo es en minúscula pero lo demás que fue lo que yo cree debe estar en mayúscula, ademas tu declaras en la clase model pero el directorio debe ser models. Igual hay otros que ya Zend tiene predefinido, como Form debe ser un directorio llamado Forms, Plugin debe ser un directorio llamado plugins...
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 08/10/2011, 13:44
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mapear columnas a propiedades de un objeto

Luego de intentar crear un Mapper, me fue imposible. Zend se quejaba de que no encontraba la clase y en internet no encontre ninguna informacion sobre ese namespace. Verifique tambien con Zend_Tool pero no da la opcion de crear Mappers, solo Controllers, Models, DbTables, Actions, Views, Modules, etc ...

Lo que hice entonces fue hacerlo de la manera como esta en el QuickStart.
  #6 (permalink)  
Antiguo 08/10/2011, 13:57
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Mapear columnas a propiedades de un objeto

No esta disponible para Zend_Tool, puede que no te funcione porque me comí la "s" es mappers, en la clase Zend_Application_Module_Autoloader tienes los resources que se cargan por defecto, su namespace y a donde mapean http://framework.zend.com/svn/framew...Autoloader.php.

Application_Model_Mapper_User -> application/models/mappers/User.php

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 08/10/2011 a las 14:30

Etiquetas: clase, columnas, framework, objeto, propiedades
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:15.