Symfony2 / Doctrine Query Builder或SQL - 使用LIKE语句时首选哪种方式?

时间:2012-02-14 19:13:34

标签: sql orm doctrine symfony query-builder

我正在尝试使用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 个答案:

答案 0 :(得分:6)

没有区别。

所有查询构建器都是创建DQL然后传递 试着看: 死亡($ QB-> getDQL());

我使用查询构建器,因为我发现它比构建字符串更容易,您可以共享部分查询。但最终结果将是相同的。