3

我有一个 DQL 查询,例如:

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

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

4

3 回答 3

2

您可以将 setParameter 与 DQL 一起使用,因为提供了许多示例,但对于 LIKE 子句,请确保将变量包装在%.

$em->createQuery("
    SELECT r
    FROM WeAdminBundle:FamilyRelation r
    WHERE r.col like :query
")->setParameters(array(
    'query' => '%'.$foo.'%'
))
于 2013-06-14T23:32:49.527 回答
1

简而言之:你不能按照你想要的方式。

为此,您需要类似于PDO$dql->setColumn(array('variable_column' => 'some_column_name'))中的bindColumn方法,但在 Doctrine 中没有等效的方法(bindColumsetcolumn)。

于 2013-07-10T01:19:18.910 回答
0

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

$var = "r.col";

在这里您可以根据情况进行更改。

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

请看一下。

于 2013-07-05T07:12:39.000 回答