介绍
我在这里遵循本指南,我被困在最后一部分:http ://symfony.com/doc/2.0/cookbook/security/entity_provider.html
我正在尝试从帐户表中查询并加入组表。它与中间表 account_group 是多对多关系。
account Table Fields: id, firstName, and email
account_group Table Fields: account_id and group_id
group Table Fields: id, name, and role
问题
这是我的 DQL:
SELECT a.firstName, g.role
FROM WikiRosterMainBundle:Account a
LEFT JOIN a.groups g
WHERE a.email = :email
我收到内部服务器错误:
执行 'SELECT a0_.id AS id0, a0_.firstName AS firstName1, a0_.email AS email3, g1_.role AS role18 FROM account a0_ LEFT JOIN account_group a2_ ON a0_.id = a2_.account_id LEFT JOIN group g1_ ON 时发生异常g1_.id = a2_.group_id 在哪里 a0_.email = ?带参数 {"1":"test@test.com"}:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'group g1_ ON g1_.id = a2_.group_id WHERE a0_.email = 'test@test.com'' 附近使用正确的语法
我试过的:
+向 account_group 表添加主键(无效)
+编写我自己的左连接 mysql 查询并在 phpmyadmin 中输入(使用单个左连接,但当我尝试连接 3 个表时失败)
+翻转我正在加入/从中选择的表格
我做过的研究
似乎在 mysql 5 中左连接发生了变化。我查看了文档和其他堆栈溢出问题:
http://dev.mysql.com/doc/refman/5.0/en/join.html
5.0.12 更改后的 MySQL LEFT JOIN - 如何重写查询
谢谢你的帮助!