3

次のような DQL クエリがあります。

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

ここで、さまざまなパラメーターに応じて「col」を変更したいと考えています。ここでは通常の setParameter が機能しないため、DQL でこれを達成するにはどうすればよいですか。

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

要するに、あなたはあなたが望むようにはできません。

$dql->setColumn(array('variable_column' => 'some_column_name'))これを行うには、PDOのメソッドと同じようなものが必要ですが、Doctrine にbindColumnは同等のメソッド ( bindColumまたはsetcolumn ) がありません。

于 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 に答える