我对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内容的变通方法或方法来处理连接?
答案 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
'
);