我有一个DQL查询,如:
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE r.col like :query
")
现在我想根据各种参数更改“col”。我如何使用DQL实现这一点,因为普通的setParameter在这里不起作用。
答案 0 :(得分:2)
您可以将setParameter与DQL一起使用,many examples are provided但是对于LIKE子句,请确保该变量包含在%
中。
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE r.col like :query
")->setParameters(array(
'query' => '%'.$foo.'%'
))
答案 1 :(得分:1)
简而言之:你不能按照你想要的方式。
要做到这一点,你需要$dql->setColumn(array('variable_column' => 'some_column_name'))
这样的东西,就像PDO中的bindColumn
方法一样,但是在Doctrine中没有等效的方法(bindColum或setcolumn)。
答案 2 :(得分:0)
要使用不同的参数而不是col,请参阅以下示例:
$var = "r.col";
您可以根据条件进行更改。
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE ".$var." like :query
")
请看一下。