2017-05-07 9 views
0

オブジェクトにこのプロパティが設定されている場合、子プロパティでDoctrineクエリをフィルタリングしようとしています。 基本的に、Class table inheritance, as described in the documentationには、抽象クラスAccommodationと、Houseと、Tentという子があります。 Houseクラスはownerプロパティを持ち、Tentプロパティはありません。 これは私がqueryBuilderを作る方法です。クラステーブル継承の子プロパティのDoctrine2フィルタクエリ

$qb = $this->createQueryBuilder('a') 
      ->select('a') 
      ->andWhere('(a NOT INSTANCE OF "House") OR (a INSTANCE OF "House" AND a.owner = :owner)') 
      ->setParameter("owner", $user); 

私はownerAccommodationのために存在しないというエラーを取得することを行う:

[Semantical Error] line 0, col 299 near 'owner =:owner)': Error: Class AppBundle\Entity\Accommodation has no field or association named owner

owner列に参加する教義を依頼する方法はありますか?

PS:これはSymfony3プロジェクトの一部ですが、私はその問題については重要ではないと思います。

答えて

0

those mailing list postsを読んで、私がしたいことはできません。だから私は最終的に2つのクエリAccommodationテーブルのいずれかとandWhere(a NOT INSTANCE OF "House")Houseのテーブルで残りを得るために行く。

これは実際のパフォーマンスは最適ではありませんが、私が見る唯一の回避策です。

誰かが他の解決策を見ている場合は、完全に落ちてください。

関連する問題