我没什么问题。
首先。我有两个实体: 预订(无论有什么) 仓库(它有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 = ?')
答案 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);