1

symfony2について質問があります。

私はプロジェクトを持っていて、それでデータベースを使用しています。私はほとんどの部分でDoctrine2とエンティティクラスを使用します。私はエンティティクラスのオブジェクトデータベースのものが好きで、とても便利です。

私の質問は、symfonyで通常のSQLを実行する方法はありますか?標準SQLを使用しようとすると、常に例外が発生します。doctrine2の結合に問題があるので、通常のSQLを使用します。

私の結合はSQLでは次のようになります。

SELECT DISTINCT Document . * 
FROM Document
INNER JOIN DocumentGruppe ON Document.id = DocumentGruppe.dokId
INNER JOIN UserGruppe ON DocumentGruppe.gruppenId = UserGruppe.gruppenId
WHERE UserGruppe.userId =9

最後のwhere句はテスト用です。DQLでdoctrineを使用すると、例外があると常に表示されますThe Variable DocumentGruppe was not defined before

これが私のDQLクエリです:

    $test = $em->createQuery(
        'SELECT DISTINCT d
        FROM AcmeDocumentBundle:Document d
        INNER JOIN DocumentGruppe dg ON d.id = dg.dokId
        INNER JOIN UserGruppe ug ON dg.gruppenId = ug.gruppenId
        WHERE ug.userId =9
        '
    );

誰かが回避策またはこのdoctrine2のものを使用して結合を操作する方法を知っていますか?

4

1 に答える 1

2

すべてのJOINEDテーブルは、マッピングで関連付けとして宣言する必要があります...エンティティはどのように定義されていますか?マッピングファイル(アノテーションの場合はDocument.php、XMlまたはYAMLの場合はResources / config / doctrine / document; xmlまたはyml)を表示します。

あなたのリクエストはそのようなものになります:

$test = $em->createQuery(
    'SELECT DISTINCT d
    FROM AcmeDocumentBundle:Document d
    INNER JOIN d.documentGruppen dg
    INNER JOIN d.userGruppen ug
    WHERE ug.userId =9
    '
);
于 2012-06-12T13:50:24.147 に答える