我正在使用Symfony 3和学说2.5。还有的三个表总计:MySQL和Doctrine QueryBuilder从三个表中多个LEFT和INNER JOIN
a. user table:
id name
1 Alex
2 Jim
3 Bob
b. companies table
id name
1 company1
2 company2
c. company_users containing the relationship, both user_id and company_id.
id company_id user_id
1 1 1
2 2 1
3 2 2
鉴于公司ID 2,最终的结果应该是这样,但对我的生活,我不能为它编写
1 company2 - Alex
2 company2 - Jim
工作学说QueryBuilder的方法,我有三个工作MySQL查询为我带来了期望的结果。 但是对于我的生活,我不能将它转换成至少一个工作原则查询。
工作的MySQL查询(这可能会真正帮助一些用户在这里):
SELECT companies.name, user.username
FROM companies
LEFT JOIN company_users ON company_users.company_id = companies.id
LEFT JOIN user ON company_users.user_id = user.id WHERE companies.id = 2;
SELECT u.username, c.name
FROM user u, company_users cu, companies c
WHERE cu.user_id = u.id and cu.company_id = c.id and c.id = 2
SELECT companies.name, user.username
FROM companies
LEFT JOIN company_users
INNER JOIN user
ON company_users.user_id=user.id
ON company_users.company_id=companies.id WHERE companies.id=2;
我试图在学说的QueryBuilder的:
->select('u.username', 'c.name')
->from('companies','c')
->leftJoin('c', 'company_users', 'cu', 'company_users.company_id = companies.id')
->leftJoin('u', 'user', 'u', 'company_users.user_id = user.id')
->where('c.id = :companyId')
->setParameter('companyId', $companyId)
->getQuery()
->getResult();
为什么不在连接条件中使用别名? ''company_users.company_id = companies.id'' - >''cu.company_id = c.id'' –