php - Doctrine2 通过 QueryBuilder 获取具有 manyToMany 关联的行

标签 php symfony doctrine query-builder

大家。 我有 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/

相关文章:

php - Symfony php.ini Debian

php - 有没有办法在 TWIG (Symfony2) 中用 html 标签替换字符串?

Symfony/Doctrine 反序列化时间

php - 安装 symfony 包(Doctrine CouchDB Bundle)

php - 返回带有 json 的 blob

javascript - PHP - 如果用户退出网页则取消链接文件?

php - 添加了 Meta 标签 UTF 8 但未声明 HTML 文档的字符编码

php - Symfony - 修改原型(prototype)中的默认数据

php - Doctrine 2 中的问题理解关系映射

php - 忽略一页的 Smarty 模板 Fetch()