używam następujące metody w klasie repozytorium szukać niektórych znaczników w mojej bazy danych:Symfony2/Doctrine QueryBuilder użyciu 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();
}
ten działa tylko ładne .. Ale: Jak mogę dodać 2 dodatkowe zmienne (gdzie: checked = 1, enabled = 1)? Próbowałem andwhere(), ale nie mogłem tego rozgryźć.
Dowiedziałem się też, że coś takiego:
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');
// ...
}
nie będzie działać albo ...
żadnych wskazówek?
dziękuje elnur, czy addOrderBy() różni się od orderBy()? – Mike
Uważam, że addOrderBy jest używany jest łączenie logiki z orderBy. Na przykład, jeśli chcesz mieć 2 parametry orderBy, pierwsze będzie "orderBy", a następnie "addOrderBy". Działa tak samo, jak klauzula where. Pierwszy to -> gdzie, następnie wszystkie następne są zapisywane "-> addWhere". –