原则 2 - 如何在 where 子句中使用鉴别器列

2022-08-30 11:40:53

我在 where 子句中使用了鉴别器列,如下所示:

//f = root entity
$qb = $this->createQueryBuilder('f');
$qb->add('where', 'f.format = \'image\' OR f.format = \'text\'');

我收到一个错误:“消息:[语义错误]第0行,col 73靠近'format ='image'':错误:类实体\文件\AbstractFile没有名为格式的字段或关联”

如何在 where 子句中使用鉴别器列?

谢谢。


答案 1

我认为你应该使用实例


答案 2

它在查询生成器中看起来是这样的:

$class = 'Entity\File\Image';

$qb = $this->createQueryBuilder('f');
$qb->where($qb->expr()->isInstanceOf('f', $class));

注意:您将无法将类设置为参数,因为它将被转义。


推荐