我使用Symfony 4.1,并且需要以“复杂”条件连接表:
$query = $this->createQueryBuilder('r')
->select('r, d.latitude, d.longitude')
->join('App\Entity\Departement', 'd', 'WITH',
'IF (LEFT(r.postal, 2) < \'96\', LEFT(r.postal, 2), LEFT(r.postal, 3)) = d.code')
我遇到了错误:
预期的已知函数,得到了'IF'
如何在联接条件中使用原始查询?
编辑
好的,IF
在DQL中没有定义...所以我使用了:
->join('App\Entity\TblDepartement', 'd', 'WITH',
'CASE WHEN (SUBSTRING(r.postal, 0, 2) < \'96\')
THEN SUBSTRING(r.postal, 0, 2)
ELSE SUBSTRING(r.postal, 0, 3) END AS postal')
但是postal
始终是空的,知道吗?