“?1”和​​“?”之间的区别

时间:2014-02-28 20:13:43

标签: doctrine-orm dql

在DQL查询中使用??1有什么区别? E.g。

$qb->add('select', 'u')
   ->add('from', 'User u')
   ->add('where', 'u.id = ?1') //<-------
   ->add('orderBy', 'u.name ASC');
   ->setParameter(1, 100);

$qb->add('select', 'u')
   ->add('from', 'User u')
   ->add('where', 'u.id = ?') //<-------
   ->add('orderBy', 'u.name ASC');
   ->setParameter(1, 100);

1 个答案:

答案 0 :(得分:1)

仅使用?会使多个参数按此顺序编制索引,而使用?1显式定义索引将允许您按任何顺序对参数进行编号。

$qb->add('select', 'u')
   ->add('from', 'User u')
   ->add('where', $qb->expr()->orx(
       $qb->expr()->eq(    'u.id',       '?2'), // using 2 before 1 because I can
       $qb->expr()->like(  'u.nickname', '?1')
   ))
   ->add('orderBy', 'u.name ASC');
   ->setParameter(1, 'bob');  // bound to u.nickname
   ->setParameter(2, 100);    // bound to u.id