gpt4 book ai didi

php - MySQL 和 Doctrine QueryBuilder 来自三个表的多个 LEFT 和 INNER JOINS

转载 作者:行者123 更新时间:2023-11-30 22:04:29 25 4
gpt4 key购买 nike

我正在使用 Symfony 3 和 doctrine 2.5。一共有三张表:

 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,最终结果应该是这样的,但对于我来说,我无法为它编写一个有效的 Doctrine QueryBuilder 方法

1   company2 - Alex
2 company2 - Jim

我有三个有效的 MySQL 查询,它们给我带来了想要的结果。但是对于我的生活,我不能将其中任何一个转化为至少一个有效的 Doctrine 查询。

有效的 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;

我对 Doctrine 的 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'

左连接语法与您使用的语法不同。

public function leftJoin($join, $alias, $conditionType = null, $condition = null, $indexBy = null);

固定生成器

->select('u.username', 'c.name')
->from('companies','c')
->leftJoin('company_users', 'c', 'WITH', 'cu.company_id = c.id')
->leftJoin('user', 'u', 'WITH', 'cu.user_id = u.id')
->where('c.id = :companyId')
->setParameter('companyId', $companyId)
->getQuery()
->getResult();

关于php - MySQL 和 Doctrine QueryBuilder 来自三个表的多个 LEFT 和 INNER JOINS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42208905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com