Doctrine 2 - WHERE句の弁別列の使用方法
-
13-11-2019 - |
質問
私はこのようなどこの節の弁別列を使った:
//f = root entity
$qb = $this->createQueryBuilder('f');
$qb->add('where', 'f.format = \'image\' OR f.format = \'text\'');
.
エラーがあります。>
WHERE句の識別列を使用する方法は?
ありがとう。
他のヒント
このようなクエリビルダーを調べます。
$class = 'Entity\File\Image';
$qb = $this->createQueryBuilder('f');
$qb->where($qb->expr()->isInstanceOf('f', $class));
.
注:エスケープされるため、クラスをパラメータとして設定できないことがわかりません。
PHP 5.50以上の場合:
$this->createQueryBuilder('f')
->andWhere('f INSTANCE OF '.Image::class)
. この最新のDoctrineバージョンとして、それはQueryの照会値を照会するためにサポートされています。
public function findOfType($discr)
{
$qb = $this->createQueryBuilder('e');
$qb->where('e INSTANCE OF :discr');
$qb->setParameter('discr', $discr);
return $qb->getQuery()->getResult();
}
.
この句に結果クエリを作成します。
WHERE e0_.discr IN ('discriminator_passed_to_function')
. この場合は、その場合はINSTANCE OF
にアクセスする必要がありませんので、このDoctrine拡張は私にとって非常に便利でした。
https://gist.github.com/jasonhofer/8420677
次のような次のクラス構造があります。
ベースクラス
class1 baseclass から継承します(識別子= C1)
class2 class1 から継承します(識別子= C2)
class3 class1 (識別子= c3)から継承
class1 からすべてのエンティティを選択したいが、 class2 または class3 からではありません。
.SELECT c FROM \Class1 c WHERE TYPE(c) = 'c1';
所属していません StackOverflow