Доктрина 2 - Найти все объекты в хранилище, кроме одного с определенным значением идентификатора - PullRequest
1 голос
/ 24 июля 2011

Я использую Doctrine 2.

Я хочу получить все сущности класса сущностей, кроме той, у которой id = 0.

Я мог бы использовать QueryBuilder следующим образом:*

// $em is EntityManager
$em->createQueryBuilder()
       ->select('c')
         ->from('Category', 'c')
           ->where('c.id <> 0')
             ->getQuery()
               ->getResult();

Но, глядя на этот код, он кажется слишком большим для такой простой задачи.Мне любопытно узнать, есть ли в Doctrine какой-либо другой более простой способ сделать это.

Ответы [ 3 ]

5 голосов
/ 24 июля 2011

Нет, вот как вы должны это сделать. Вы можете опустить конструктор запросов и передать весь запрос DQL:

$em->createQuery("SELECT c FROM Category c WHERE c.id != 0")->getResult();
0 голосов
/ 24 апреля 2019

Для сравнения и условий я рекомендую также использовать Doctrine. Это сэкономит ваше время в случае переключения между базами данных, например, MySQL на PostgreSQL:

$this->createQueryBuilder()
    ->select('c')
    ->from('Category', 'c')
    ->where($qb->expr()->neq('c.id', '?1'))
    ->setParameter('1', $category)
    ->getQuery()
    ->getResult()
0 голосов
/ 20 июня 2014

Передавать идентификационный номер не рекомендуется, вы можете передать объект Category следующим образом:

public function findAllExcept($category) {
    $qb = $this->createQueryBuilder('Category');
    $qb->add('select', 'c')
       ->add('from', 'Category c')
       ->add('where', 'c != :category')
       ->setParameter('category', $category);
    return $qb->getQuery()->getResult();
}
...