Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Como realizar consultas sobre una bdd con poo

Estas en el tema de Como realizar consultas sobre una bdd con poo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola buenas, Tengo la siguiente duda.. como hago para recoger un objeto que cumpla una serie de condiciones en poo?¿ Me traigo todo el objeto ...
  #1 (permalink)  
Antiguo 02/02/2011, 05:40
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Como realizar consultas sobre una bdd con poo

Hola buenas,

Tengo la siguiente duda.. como hago para recoger un objeto que cumpla una serie de condiciones en poo?¿

Me traigo todo el objeto de la bbdd, o creo algún método para cada caso? y si hay mas de un caso dentro de la condición?

Un saludo!
  #2 (permalink)  
Antiguo 02/02/2011, 09:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Como realizar consultas sobre una bdd con poo

No entiendo bien tu duda, cual es en sí tu duda completa?
  #3 (permalink)  
Antiguo 02/02/2011, 12:53
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Como realizar consultas sobre una bdd con poo

Cita:
Iniciado por GatorV Ver Mensaje
No entiendo bien tu duda, cual es en sí tu duda completa?
Tengo la clase perro

Quiero traerme los perros que sean rojos y con 3 ojos.

Cómo lo indico?

Un saludo!
  #4 (permalink)  
Antiguo 02/02/2011, 12:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Como realizar consultas sobre una bdd con poo

Pues depende mucho de tu framework y el soporte que tenga, si no con un simple SQL directo te debería de dejar hacerlo.

Saludos.
  #5 (permalink)  
Antiguo 02/02/2011, 13:11
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Como realizar consultas sobre una bdd con poo

si.. con sql si... pero con objetos?

Cómo sería?
  #6 (permalink)  
Antiguo 02/02/2011, 13:59
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Como realizar consultas sobre una bdd con poo

pues que tanto sabes de POO, lo que estas pidiendo son simplemente atributos, sencillamente tu debes de tener una clase que sea perro con un atributo cantidad de ojos y un atributo color, lo demas es hacer la consulta a la base de datos y asignarselo a estos, pero mi pregunta que tanto sabes de POO??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 02/02/2011, 14:14
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Como realizar consultas sobre una bdd con poo

Cita:
Iniciado por carlos_belisario Ver Mensaje
pues que tanto sabes de POO, lo que estas pidiendo son simplemente atributos, sencillamente tu debes de tener una clase que sea perro con un atributo cantidad de ojos y un atributo color, lo demas es hacer la consulta a la base de datos y asignarselo a estos, pero mi pregunta que tanto sabes de POO??
JAJAJAJA no sabía que existía atributos en POO...

Puedes ponerme en código el ejemplo sacar de la base de datos un perro con 3 ojos y color rojo ( no me pongas las consultas SQL, sólo quiero Objetos ) lo que tu me dices es evidente, no hace falta ni comentarlo...
  #8 (permalink)  
Antiguo 02/02/2011, 14:18
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Como realizar consultas sobre una bdd con poo

No se si te entendi bieni miktrv, pero podrias implementar un finder generico y varios finders que sean proxy al generico, algo asi:

Código PHP:
Ver original
  1. public function find($where = array(), $order = array(), $page = false)
  2. {
  3.   ...
  4. }
  5.  
  6. public function findByColor($color, $order = array(), $page = false)
  7. {
  8.     return $this->find(array('color' => $color), $order, $page);
  9. }
  10.  
  11. public function findByColorWithEyes($color, $eyes, $order = array(), $page = false)
  12. {
  13.     return $this->find(array('color' => $color, 'eyes' => $eyes), $order, $page);  
  14. }
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 02/02/2011, 14:28
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Como realizar consultas sobre una bdd con poo

Cita:
Iniciado por masterpuppet Ver Mensaje
No se si te entendi bieni miktrv, pero podrias implementar un finder generico y varios finders que sean proxy al generico, algo asi:

Código PHP:
Ver original
  1. public function find($where = array(), $order = array(), $page = false)
  2. {
  3.   ...
  4. }
  5.  
  6. public function findByColor($color, $order = array(), $page = false)
  7. {
  8.     return $this->find(array('color' => $color), $order, $page);
  9. }
  10.  
  11. public function findByColorWithEyes($color, $eyes, $order = array(), $page = false)
  12. {
  13.     return $this->find(array('color' => $color, 'eyes' => $eyes), $order, $page);  
  14. }
Exacto, yo tengo ahora métodos genéricos del tipo, getById, etc, pero cuando se combinan varias condiciones, parece que la poo pierde un poco el sentido tras una base de datos.. se vuelve un poco "ortopedica".. y quería saber cual es la mejor manera para hacer esto ( evidentemente sin tener que tirar de una SQL ), también he pensado en crear por cada objeto, un objeto "superior" que sirva para obtener los objetos de su tipo, algo como:

$objeto

$objetoFind


Y pasarle al $objetoFind los parámetros que debe cumplir, por ejemplo:

$objetoFind->setOjos(3);
$objetoFind->setColor('rojo');

Y al hacer $objetoFind->getObjects();

Que me devuelva los de la condición...

La sql interna sería:

SELECT * FROM TABLA WHERE OJOS = 3 AND COLOR = 'rojo'

Muchas gracias y un saludo!
  #10 (permalink)  
Antiguo 02/02/2011, 14:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Como realizar consultas sobre una bdd con poo

Te digo depende mucho de como lo implementes, por ejemplo revisa lo siguiente: http://www.forosdelweb.com/f68/como-...n-zend-882312/ lo que tu estas pidiendo/preguntando depende del framework / orm que uses, por ejemplo Doctrine usa DQL para eso.
  #11 (permalink)  
Antiguo 02/02/2011, 14:33
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Como realizar consultas sobre una bdd con poo

De acuerdo, muchas gracias. Realmente me interesaría implementar todo esto "a mano", quería saber que tipo de métodos usáis para esto, sin contar con Frameworks ni SQL directa.

Un saludo y gracias!
  #12 (permalink)  
Antiguo 02/02/2011, 14:34
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Como realizar consultas sobre una bdd con poo

pues si tienes una clase que ya tiene generico con findById y te hace la consulta sencillamente debes de pasarle los parametros necesarios para que te haga esta y ya, y las clases se conforman por metodos y atributos eso lo deberias de saber si ya has trabajado con POO, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #13 (permalink)  
Antiguo 02/02/2011, 14:47
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Como realizar consultas sobre una bdd con poo

Cita:
Iniciado por carlos_belisario Ver Mensaje
pues si tienes una clase que ya tiene generico con findById y te hace la consulta sencillamente debes de pasarle los parametros necesarios para que te haga esta y ya, y las clases se conforman por metodos y atributos eso lo deberias de saber si ya has trabajado con POO, saludos
Es lo que te he comentado antes, ponme tu que eres el que sabes, solo con POO como sacar los perros con 3 ojos y de color rojo, que harás, una combinación para cada caso? no es lógico...

getElementByColorAndOjos? jajaja


Un saludo!
  #14 (permalink)  
Antiguo 02/02/2011, 14:54
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Como realizar consultas sobre una bdd con poo

Si te interesa hacerlo vos, podrías implementar Query Object, aca te dejo otra referencia http://www.zimbio.com/SQL/articles/9...Object+Pattern.
__________________
http://es.phptherightway.com/
thats us riders :)
  #15 (permalink)  
Antiguo 02/02/2011, 15:10
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Como realizar consultas sobre una bdd con poo

Cita:
Iniciado por masterpuppet Ver Mensaje
Si te interesa hacerlo vos, podrías implementar Query Object, aca te dejo otra referencia http://www.zimbio.com/SQL/articles/9...Object+Pattern.
Muchas gracias, me has aportado mucho material interesante, un saludo!!
  #16 (permalink)  
Antiguo 02/02/2011, 15:13
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Como realizar consultas sobre una bdd con poo

Aprovechando el post.. otra cosa que no me gusta nada, es tener que traerme todos los campos de la base de datos... como especifico que campos quiero¿? ( Sólo con POO ), supongo que más de lo mismo...

Un saludo!

Etiquetas: poo, realizar, bbdd
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 08:25.