Symfony2,与doctrine2或sql一起加入

时间:2012-06-12 13:42:14

标签: mysql symfony doctrine-orm

我对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子句仅用于测试。如果我将doctrine与它的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
        '
    );

是否有人知道使用此doctrine2内容的变通方法或方法来处理连接?

1 个答案:

答案 0 :(得分:2)

每个JOINED表必须在映射中声明为关联...您的实体是如何定义的?向我们展示您的映射文件(Document.php if annotation,或Resources / config / doctrine / document; xml或yml,如果是XMl或YAML)。

您的请求将是这样的:

$test = $em->createQuery(
    'SELECT DISTINCT d
    FROM AcmeDocumentBundle:Document d
    INNER JOIN d.documentGruppen dg
    INNER JOIN d.userGruppen ug
    WHERE ug.userId =9
    '
);