【发布时间】:2016-11-27 21:44:56
【问题描述】:
这个查询让我可以得到所有给定球队ID的球员,当他的身体状态等于2时。
$qb = $this->createQueryBuilder('player')
->where('player.physicalState= 2')
->join('player.team', 'team')
->addSelect('team')
->where('team.id = :id')
->setParameter('id', $teamId);
return $qb->getQuery()->execute()
但事实是:我还有另一个表 OLD_TEAM。 Player 与 TEAM 和 OLD_TEAM 是一对多的关系。因此,玩家可以链接到 TEAM 或 OLD_TEAM。
所以我想改进/完成我的查询以得到类似的东西
在 TEAM 表中搜索我的团队中 ID 为 x 的球员。如果这不存在,我想在 OLD_TEAM 表中搜索相同的内容。
我不知道此解决方案是否是搜索该解决方案的最佳解决方案,如果有更简单的解决方案,请随时通知我。
PS:OLD_TEAM 和 TEAM 使用相同的 PK 序列。
谢谢。
【问题讨论】:
-
您也可以尝试使用不同的连接类型。添加 .leftJoin('player.team', 'team').leftJoin('player.old_team', 'old_team') 然后看看发生了哪一个。但是恕我直言,您真的应该认为数据结构,例如。属于多支球队的球员呢?那些不止在两支球队效力的球员呢?等等……
标签: php symfony doctrine-orm