我试图计算书籍,这依赖于我系统中添加的标签。 问题是,我得到错误数量的具有相同标签的计数书。
书本实体:
/**
* @ORM\ManyToMany(targetEntity="Tag", mappedBy="books", cascade={"persist"})
*/
protected $tags;
标签的实体:
/**
* @ORM\ManyToMany(targetEntity="Book", inversedBy="tags")
* @ORM\JoinTable(name="books_tags")
*/
protected $books;
在我的TagRepository中,我有以下Codetr for Doctrine Query Builder:
return $this->createQueryBuilder('t')
->innerJoin('t.books', 'b')
->addSelect('t.name')
->addSelect('t.id')
->addSelect('COUNT(b.id) AS amount')
->andWhere('t.name LIKE :name')
->setParameter('name', $term . '%')
->getQuery()
->getResult();
此查询有什么问题?为什么不计算依赖于一个找到的标签($ term)的书呢?
此致++
答案 0 :(得分:1)
您需要通过添加groupBy
语句
return $this->createQueryBuilder('t')
->innerJoin('t.books', 'b')
->addSelect('t.name')
->addSelect('t.id')
->addSelect('COUNT(b.id) AS amount')
->groupBy('t.id')
->andWhere('t.name LIKE :name')
->setParameter('name', $term . '%')
->getQuery()
->getResult();