Symfony2 / Doctrine Query Builder или DQL - какой способ лучше использовать при использовании оператора LIKE? - PullRequest
2 голосов
/ 14 февраля 2012

Я пытаюсь создать запрос с помощью оператора LIKE. Оба примера ниже работают, но какой из них лучше? Есть ли один, который является более безопасным, чем другой? Или лучше работает? Тот, который соответствует лучшей практике? Что-то другое? Просто интересно здесь ... Кроме того, возможно, есть совершенно другой способ выполнить операцию LIKE, о которой я не знаю?

Пример 1:

 $em = $this->getDoctrine()->getEntityManager();
 $query = $em->createQuery(
     'SELECT u.user1lname FROM MySiteMyBundle:User u WHERE u.user1lname LIKE :searchTerm ORDER BY u.user1lname ASC'
     )->setParameter('searchTerm', $searchTerm.'%');

$result = $query->getResult();

Пример 2:

$em = $this->getDoctrine()->getEntityManager();
$qb = $em->createQueryBuilder();
$result = $qb->select('n.user1lname')->from('MySite\MyBundle\Entity\User', 'n')
    ->where($qb->expr()->like('n.user1lname', $qb->expr()->literal($searchTerm.'%')))
    ->getQuery()
    ->getResult();

1 Ответ

6 голосов
/ 14 февраля 2012

Без разницы.

Все, что делает построитель запросов, - это создает DQL, который затем передается.
Попробуйте посмотреть на: умереть ($ qb-> getDQL ());

Я использую построитель запросов, потому что мне проще, чем строить строки, и вы можете поделиться частями запроса. Но конечные результаты будут такими же.

...