2

symfony2 プロジェクト データベースのいくつかのテーブルにクラス テーブル継承を使用しています。スーパークラスへの外部キーを持つリレーション テーブルがいくつかあります。

ここで、リレーション テーブルで開始し、スーパークラスに参加するクエリを書きたいと思います。レコードをサブクラスにフィルターしたい場合は、次のように書くだけです。

SELECT r, c
FROM
BasicBundle:RelationEntity r
JOIN r.superclassId c
WHERE
c INSTANCE OF BasicBundle:Subclass

私の問題は、次のようなサブクラスの属性を持つ WHERE 句も設定したいということです。

WHERE
c INSTANCE OF BasicBundle:Subclass
AND
c.subclassAttribute LIKE %example%

これはうまくいきません。私はいくつかの調査を行い、この記事を見つけましたが、クエリで「CAST」を使用しようとするたびにエラーが発生します。そのため、CAST は使用できないようです。

スーパークラスクエリの WHERE ステートメントでサブクラス属性を使用する方法を知っている人はいますか?

4

1 に答える 1

1

サブクエリを試してみませんか?

例えば:

WHERE
c INSTANCE OF BasicBundle:Subclass
AND EXISTS 
  (SELECT x FROM BasicBundle:Subclass s 
   WHERE s.id = c.id AND s.subclassAttribute LIKE %example%)

インスタンスで何か間違ったことをしたのかもしれませんが、正直なところ、非常に詳細な例を提供していませんでした。

于 2013-01-19T16:35:44.257 に答える