remove doctrine2 findby

doctrine2 - remove - Doctrine findBy con O condición



find by id doctrine (4)

Hasta donde yo sé, Doctrine no es una característica compatible para usar consultas IN () con findby. Puedes hacer dos cosas:

  1. Implemente un findByStatus(array $statusTypes) en su clase de repositorio (personalizado) ''notif''. Si te gusta este enfoque, puedo darte un ejemplo.

  2. Convierte tu findBy a lo siguiente:

    $qb = $this->repos[''notif'']->createQueryBuilder(''n''); $data = $qb->where($qb->expr()->in(''status'', array(1,2,3)))->getQuery()->getResult();

Eso debería funcionar bien :)

¿Es posible utilizar la instrucción OR en el método Doctrine findBy() ? Sé que la matriz dada se interpreta como case1 AND case2... Como esta

$this->repos[''notif'']->findBy(array(''status'' => 1, ''status'' => 2, ''status'' => 3);

Representa

SELECT * FROM `notif` WHERE status=1 AND status=2 AND status=3;

Ahora necesito algo que representar:

SELECT * FROM `notif` WHERE status=1 OR status=2 OR status=3;

¿Hay alguna forma de obtener todos los casos?


Puedes escribir:

$this->repos[''notif'']->findBy(array(''status'' => array(1, 2, 3)));

y eso debería funcionar también


Sé que esta es una vieja pregunta. De todos modos, es posible usar Criteria para las consultas complejas (al menos en Doctrine 2):

$criteria = new /Doctrine/Common/Collections/Criteria(); $criteria ->orWhere($criteria->expr()->contains(''domains'', ''a'')) ->orWhere($criteria->expr()->contains(''domains'', ''b'')); $groups = $em ->getRepository(''Group'') ->matching($criteria);


Si está utilizando MongoDB y necesita consultas más complejas, como "menor que" vinculado junto con OR, pero no puede usar un generador de consultas, esto también funciona con esta sintaxis:

->findBy(array( ''$or'' => array( array(''foo'' => array(''$lt'' => 1234)), array(''$and'' => array( array(''bar'' => 45678), array(''baz'' => array(''$lt'' => 89013)) )) ) ));

O como una solución para su pregunta:

->findBy(array( ''$or'' => array( array(''status'' => 1), array(''status'' => 2), array(''status'' => 3), ) ));