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エンティティにはフィールドがありません。誰かが間違っていることを知っていますか?idPageid

前もって感謝します

4

2 に答える 2

0

Doctrine はすべてのプロパティをプライベートに設定します。したがって、継承されたクラスからそれらにアクセスすることはできません。private親クラスのプロパティを に設定できますprotected。それならうまくいくと思います。

于 2013-04-05T16:49:44.320 に答える