我有一个 DQL 查询,例如:
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE r.col like :query
")
现在我想根据各种参数更改“col”。我如何使用 DQL 来实现这一点,因为普通的 setParameter 在这里不起作用。
您可以将 setParameter 与 DQL 一起使用,因为提供了许多示例,但对于 LIKE 子句,请确保将变量包装在%
.
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE r.col like :query
")->setParameters(array(
'query' => '%'.$foo.'%'
))
简而言之:你不能按照你想要的方式。
为此,您需要类似于PDO$dql->setColumn(array('variable_column' => 'some_column_name'))
中的bindColumn
方法,但在 Doctrine 中没有等效的方法(bindColum或setcolumn)。
要使用不同的参数而不是 col,请参见下面的示例:
$var = "r.col";
在这里您可以根据情况进行更改。
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE ".$var." like :query
")
请看一下。