2

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();
4

1 に答える 1

6

変わりはない。

クエリビルダーが行うのは、DQL を作成することだけです。DQL はその後渡されます。
見てみてください: die($qb->getDQL());

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

于 2012-02-14T19:38:34.030 に答える