在
DQL 查询中使用 ?
或 ?1
有什么区别? 例如
$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
显式定义索引将允许您按任何顺序对参数进行编号。
$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