Ver Mensaje Individual
  #9 (permalink)  
Antiguo 02/02/2011, 14:28
miktrv
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 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!