Mysql 原则Symfony DQL连接复杂SQL多对多

Mysql 原则Symfony DQL连接复杂SQL多对多,mysql,symfony,doctrine-orm,query-builder,Mysql,Symfony,Doctrine Orm,Query Builder,我在多对多相关表和查询生成器生成正确的sql时遇到问题 location_googles是一个由另一个表连接的表,该表保存id的location_to_googles $queryBuilder = $this ->createQueryBuilder('v') ->addSelect('vi.filename AS image') ->addSelect('vc.long_name as countryName, vcs.long_name as st

我在多对多相关表和查询生成器生成正确的sql时遇到问题

location_googles是一个由另一个表连接的表,该表保存id的location_to_googles

$queryBuilder = $this
    ->createQueryBuilder('v')
    ->addSelect('vi.filename AS image')
    ->addSelect('vc.long_name as countryName, vcs.long_name as stateName, vcsc.long_name as cityName')
    ->leftJoin('v.location_googles', 'vc', 'WITH', "vc.type0 = :countrytypeid")
    ->setParameter('countrytypeid', 8)        
    ->leftJoin('v.location_googles', 'vcs', 'WITH', "vcs.type0 = :statetypeid")
    ->setParameter('statetypeid', 7)
    ->leftJoin('v.location_googles', 'vcsc', 'WITH', "vcsc.type0 = :citytypeid")
    ->setParameter('citytypeid', 5)
    ->leftJoin($imageEntityName, 'vi', 'WITH', "vi.parent = v.id")
    ->andWhere('v.status=:status')
    ->setParameter('status', 1)
    ->groupBy('v.id')
    ->orderBy($orderField, $orderDir);
查询生成器有时会显示countryName、stateName和cityName的空白条目


如果我使用导出的sql并将条目从左连接更改为常规连接,则会填充数据或右连接。但我不知道如何让query builder生成该数据。

您确定每个v记录都有一个国家/地区吗?看起来您有一些空的关系值。顺便说一下,DQL很少需要使用WITH子句。DQL足够聪明,可以根据您的映射数据加入。不是每个v记录都有一个国家/地区号。这会阻止有国家/地区的记录被填充吗?有些记录应该显示一个值,而不是。还有,如果我需要typeid来标识国家记录,我将如何删除,此表中混合了国家、州、城市等…因此国家、州和城市都在同一个表中?我想你确实有一个加入某种问题,但我不想猜测细节。祝你好运。事实上,条令也不需要WITH,你也不需要使用实际的表名,我猜,但我也不想再去猜测细节了,这一次我的代表已经受够了:)什么细节能帮助你理解?数据库结构图?两个实体的实体代码?