Doc中,DQL中的转义变量字段名称

时间:2013-06-04 14:50:03

标签: sql doctrine dql

我有一个DQL查询,如:

$em->createQuery("
    SELECT r
    FROM WeAdminBundle:FamilyRelation r
    WHERE r.col like :query
")

现在我想根据各种参数更改“col”。我如何使用DQL实现这一点,因为普通的setParameter在这里不起作用。

3 个答案:

答案 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中没有等效的方法(bindColumsetcolumn)。

答案 2 :(得分:0)

要使用不同的参数而不是col,请参阅以下示例:

$var = "r.col";

您可以根据条件进行更改。

$em->createQuery("
    SELECT r
    FROM WeAdminBundle:FamilyRelation r
    WHERE ".$var." like :query
")

请看一下。