2012-02-14 5 views
2

私はLIKEステートメントを使用してクエリを作成しようとしています。以下の両方の例はどちらの方が良い方法でしょうか?他よりも安全なものはありますか?または、より良いパフォーマンスですか?ベストプラクティスに準拠したもの他に何か?ちょうどここに不思議...また、私は気付いていないLIKE操作を行うための全く別の方法がありますか?Symfony2/DoctrineクエリビルダまたはDQL - 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(); 

答えて

6

差がありません。

すべてのクエリビルダでは、DQLを作成して渡します。
見てみましょう: die($ qb-> getDQL());

私はクエリビルダーを使用します。これは、文字列を作成するよりも簡単であり、クエリの一部を共有できるからです。しかし、最終結果は同じになります。

+0

ああ、私は確信していませんでした... PS - 'getDQL()'、nice!ありがとう、これはテストするときに非常に便利です! – ElasticThoughts

関連する問題