次のような DQL クエリがあります。
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE r.col like :query
")
ここで、さまざまなパラメーターに応じて「col」を変更したいと考えています。ここでは通常の setParameter が機能しないため、DQL でこれを達成するにはどうすればよいですか。
多くの例が提供されているため、setParameter を DQL で使用できますが、LIKE 句の場合は、変数が でラップされていることを確認して%
ください。
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE r.col like :query
")->setParameters(array(
'query' => '%'.$foo.'%'
))
要するに、あなたはあなたが望むようにはできません。
$dql->setColumn(array('variable_column' => 'some_column_name'))
これを行うには、PDOのメソッドと同じようなものが必要ですが、Doctrine にbindColumn
は同等のメソッド ( bindColumまたはsetcolumn ) がありません。
col の代わりに別のパラメータを使用するには、以下の例を参照してください。
$var = "r.col";
ここは状況に応じて変更できます。
$em->createQuery("
SELECT r
FROM WeAdminBundle:FamilyRelation r
WHERE ".$var." like :query
")
見てください。