根据Doctrine's documentation it is possible to bind parameters to a query。例如:
$qb->select('u')
->from('User u')
->where('u.id = ?1')
->orderBy('u.name', 'ASC')
->setParameter(1, 100);
派生自this question我想知道是否可以参数化select
和from
语句?像
$qb->select('?1')
->from('?2 u')
->where('u.id = 2')
->orderBy('u.name', 'ASC')
->setParameters(array(1 => 'mytable', 2 => 'mycolumn'));
我没有设法这样做,但也许我只是不知道正确的方法。有人吗?
答案 0 :(得分:2)
这是预处理语句与PDO一起使用的方式。查询和语句正在单独发送。这允许您的数据库计算查询的最佳查询路径。然后,查询路径使用参数来获得正确的结果。查询路径将尝试在下次进行相同查询时优化速度。所以对于select和你来说只需做select($select)
。请注意,每次添加新选择都会丢失优化。
更新:
这是一个相关的答案:https://stackoverflow.com/a/182353/1833322
这是它在DQL中的外观示例:
$query = $em->createQuery('SELECT x FROM '.$mappingPlusEntity.' x WHERE x.id = ?1');
$query->setParameter(1, 321);