我尝试使用DQL和
连接我的bundle中的多个表错误:
[Syntax Error] line 0, col 610: Error: Expected =, <, <=, <>, >, >=, !=, got 'CarparkFueltext'
实体:
https://gist.github.com/anonymous/9fc7bfe89bb54427f89c
代码:
https://gist.github.com/anonymous/63680019a3f260733dca
我也尝试过使用createQueryBuilder()方法
代码:
https://gist.github.com/anonymous/92012697fc99fcf02da5
ERROR:
[Syntax Error] line 0, col 423: Error: Expected Literal, got 'JOIN'
但是,如果我删除任何一个连接语句
JOIN MyBundle:SpareParts\CarparkAgestext CarparkAgestext
OR
JOIN MyBundle:SpareParts\CarFueltext CarFueltext
我正在获取数据。
错误似乎是我无法加入多个表,我需要加入至少5个表。任何想法我怎么能实现它。
答案 0 :(得分:1)
加入语法为here。
一般例子:
...
->select(['e1'])
->from('AcmeDemoBundle:Entity1', 'e1')
->innerJoin('AcmeDemoBundle:Entity2', 'e2', 'WITH', 'e2.e1 = e1')
->innerJoin('AcmeDemoBundle:Entity3', 'e3', 'WITH', 'e3.e2 = e2')
...
答案 1 :(得分:0)
您可以加入多个表格,但需要使用MyBundle:SpareParts\Carparktype
的{{3}}右侧。
您应该使用如下查询:
$query = $this->getEntityManager()->createQueryBuilder()
->select($fields)
->from('MyBundle:SpareParts\Carparktype Carparktype')
->innerJoin('Carparktype.agesText CarparkAgestext')
->where('Carparktype.makename =:makename')
->andWhere('CarparkAgestext.id =:agesid')
->setParameter('makename',$makename)
->setParameter('agesid',$param)
->getQuery()
->getResult();
如您所见,您将从SpareParts\Carparktype
的单个属性开始构建JOIN语句,该属性将映射为SpareParts\CarparkAgestext
的关联(外键)。
答案 2 :(得分:0)
也许你正在尝试加入两个没有定义关系的表。如果是这种情况,您可以使用WITH
加入它们FROM FooBundle:Entity1 e1 JOIN FooBundle:Entity2 e2 WITH e2.e1_id = e1.id