estoy usando siguiente método en una clase repositorio para buscar ciertas etiquetas en mi base de datos:Symfony2/Doctrina QueryBuilder usando andwhere()
public function getItemsByTag($tag, $limit = null)
{
$tag = '%'.$tag.'%';
$qb = $this->createQueryBuilder('c');
$qb->select('c')
->where($qb->expr()->like('c.tags', '?1'))
->setParameter(1, $tag)
->addOrderBy('c.clicks', 'DESC');
if (false === is_null($limit))
$qb->setMaxResults($limit);
return $qb->getQuery()->getResult();
}
Esto funciona simplemente agradable .. Pero: ¿Cómo puedo añadir 2 adicionales variables (donde: revisado = 1, habilitado = 1)? Intenté y dónde() pero no pude resolverlo.
También descubrí que algo como esto:
public function getItems($limit = null)
{
$qb = $this->createQueryBuilder('b')
->select('b')
->add('where', 'b.reviewed = 1')
->add('where', 'b.enabled = 1')
->addOrderBy('b.name', 'ASC');
// ...
}
tampoco funcionará ...
¿Alguna pista?
gracias elnur, ¿addOrderBy() es diferente de orderBy()? – Mike
Creo que addOrderBy se usa si concatenas la lógica del pedido. Por ejemplo, si quiere 2 parámetros orderBy, el primero sería 'orderBy', seguido de 'addOrderBy'. Funciona igual que la cláusula where. El primero es -> donde, entonces todos los siguientes están escritos '-> addWhere'. –