我在Doctrine
中使用Symfony v3.4 branch
。
我在将SQL查询转换为Doctrine ORM查询时遇到问题。
我有三张桌子。
用户--> 1:1 -->确定--> 1:1 -->店铺
(Symfony developer工具栏报告表中的关联是正确的)。
我想在一个查询中获得与cretain User
对应的Shop
数据。
对我的SQL执行,得到一个结果:
SELECT *
FROM mp2_fos_user as u
LEFT JOIN mp2_firm AS f ON u.id = f.firmUserId
LEFT JOIN mp2_shop AS s ON f.id = s.shopFirmId
WHERE u.id = 1
My Doctrine查询
$query = $em->createQueryBuilder()
->select('u, f, s')
->from('App:User', 'u')
->leftJoin('u.userFirm WITH u.id = f.firmUserId', 'f')
->leftJoin('f.firmShop WITH f.id = s.shopFirmId', 's')
->where('u.id = :user_id')
->setParameter('user_id', $user_id)
->getQuery();
此时,运行代码会导致错误
[Syntax Error] line 0, col 57: Error: Expected end of string, got 'u'
对于我的问题,什么是最佳实践?
非常感谢您的帮助,谢谢!
更新
已尝试:
$query = $em->createQueryBuilder()
->select('s.id')
->from('App:User', 'u')
->leftJoin('u.userFirm WITH f.firmUser = u', 'f')
->leftJoin('f.firmShop WITH s.shopFirm = f', 's')
->where('u.id = :user_id')
->setParameter('user_id', $user_id)
->getQuery();
获取[Syntax Error] line 0, col 54: Error: Expected end of string, got 'f'
https://stackoverflow.com/questions/50777104
复制相似问题