1

我有一个关于 symfony2 的问题。

我有一个项目,我正在使用数据库。我主要使用 Doctrine2 和实体类。我喜欢实体类对象数据库的东西,非常方便等。

我的问题是,有没有办法在 symfony 中执行正常的 SQL?当我尝试使用标准 SQL 时,我总是遇到异常。我在教义2中的连接有问题,所以我宁愿使用普通的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 一起使用,它总是说有一个例外: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
        '
    );

有谁知道一种解决方法或一种方法来使用这个学说2的东西来处理连接?

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 回答