QueryBuilder中的Symfony2 SubSelect

时间:2015-08-27 16:19:09

标签: symfony query-builder

我没什么问题。

首先。我有两个实体: 预订(无论有什么) 仓库(它有isAvailable字段)

这两个实体有关系ManyToOne(很多书到一个仓库)

我希望得到所有在Warehouse中的书以及isAvailable> 0

我知道我有什么,但我不知道如何将它写入QueryBuilder。

我的简单代码

$qb = $this->getEntityManager()
            ->createQueryBuilder()
            ->select('b.name, b.slug, b.path, b.image')
            ->from('MGraphicsApplicationWebsiteCoreBundle:Book', 'b')
            ->leftJoin('b.bookWarehouse', 'bw');

如何添加/连接以下内容:

$qb2 = $this->getEntityManager()
                ->createQueryBuilder()
                ->select('COUNT(bw)')
                ->where('bw.isAvailable = 1')
                ->andWhere('bw.book = ?')

1 个答案:

答案 0 :(得分:0)

如果您要搜索属于任何仓库的所有图书,innerJoin已经为您执行此操作:

$this->getEntityManager()
    ->createQueryBuilder()
    ->select('b, COUNT(b.id) AS books')
    ->from('MGraphicsApplicationWebsiteCoreBundle:Book', 'b')
    ->innerJoin('b.bookWarehouse', 'bw')
    ->where('b.isAvailable = 1');

如果您想要获取特定仓库的图书,只需添加条件:

->andWhere('bw.id = :warehouse')
->setParameter('warehouse', $myId);