1

我已经在我的应用程序上设置了 Doctrine 多表继承 - 见下文

/**
 * @Entity
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="type", type="string")
 * @DiscriminatorMap({
 *  "news" = "News" ,
 *  "press_release" = "PressRelease"})
 *
 * @table(name="pages")
 */
class PressRelease extends Page {...}
class News extends Page {...} 

我的自定义存储库查询

$query = $this->getEntityManager()->createQuery('SELECT u FROM MyStoreBundle:User u
LEFT JOIN u.page p
WHERE p INSTANCE OF :newsType'
)->setParameter('newsType', new News());

我认为这会起作用,但是我不断收到以下错误:

Notice: Undefined index: id in /path/to/Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php line 282

显然我的News实体没有一个字段,因为这是在扩展定义了属性的类id时继承的,有谁知道我做错了什么?Pageid

提前致谢

4

2 回答 2

5

INSTANCE OF 需要实体类名称,而不是实例:

->setParameter('newsType', 'YourProject\News');
于 2013-05-09T21:14:57.427 回答
0

Doctrine 将所有属性设置为私有。所以你不能从继承的类中访问那些。您可以将private父类中的属性设置为protected. 我想它会工作的。

于 2013-04-05T16:49:44.320 回答