大家。 我有 2 个实体 City 和 POI。映射看起来像这样:
class City {
/**
* @ORM\ManyToMany(targetEntity="POI", mappedBy="cities")
* @ORM\OrderBy({"position" = "ASC"})
*/
protected $pois;
和
class POI {
/**
* @ORM\ManyToMany(targetEntity="City", inversedBy="pois")
* @ORM\JoinTable(name="poi_cities")
*/
protected $cities;
我想使用 QueryBuilder 获取与某个城市至少有 1 个关联的所有 POI。我可能应该使用 exists() 函数,但我不知道如何使用。
最佳答案
你必须 Left join
他们并检查 cities
是否为 null。
$qb->select('p', 'c')
->from('AcmeDemoBundle:POI', 'p')
->leftJoin('p.cities', 'c')
->where('c IS NOT NULL');
我还没有测试过,但我希望它能给你一个大概的方向。您可以从 here 中阅读有关 QueryBuilder
的更多信息.
关于php - Doctrine2 通过 QueryBuilder 获取具有 manyToMany 关联的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545295/