Sql symfony 2和条令,按另一个表中的joned记录数选择表中的行
基本上我有一张table1表和Table2表 一对多的关系 所以我想做一个选择Sql symfony 2和条令,按另一个表中的joned记录数选择表中的行,sql,symfony,orm,doctrine-orm,Sql,Symfony,Orm,Doctrine Orm,基本上我有一张table1表和Table2表 一对多的关系 所以我想做一个选择 $em->createQueryBuilder() ->select('t1') ->from('AcmeAppBundle:Table1', 't1') ->orderBy('t1.id', 'DESC') ->getQuery()->getResult(); 所以我需要相同的查询,
$em->createQueryBuilder()
->select('t1')
->from('AcmeAppBundle:Table1', 't1')
->orderBy('t1.id', 'DESC')
->getQuery()->getResult();
所以我需要相同的查询,但我需要按照表2中记录的数量进行排序
关系在实体中设置为
* @ORM\OneToMany(targetEntity="Table2", mappedBy="something")
在原始查询中,它看起来像
SELECT table1.* FROM table1 left join table2 on table1.id = table2.table1_id
group by (table2.table1_id)
像这样的东西。但未测试。这将根据表2中的记录数对结果进行排序:
$queryBuilder = $entityManager->createQueryBuilder()
->select('t1, COUNT(t2.id) AS myCount')
->from('AcmeAppBundle:Table1', 't1')
->leftJoin('t1.fields', 't2') //fields is the one to many field name for the target entity AcmeAppBundle:Table2
->groupBy('t1.id')
->orderBy('myCount', 'DESC');
$result = $queryBuilder
->getQuery()->getResult();
$qb = $em->createQueryBuilder();
$qb
->select('count(t2.id) count')
->from('AcmeAppBundle:Table1', 't1')
->join('AcmeAppBundle:Table1', 't2', 'WITH', 't1.id = t2.table1_id')
->orderBy('count', 'DESC')
->groupBy('t1.id');
$queryBuilder = $entityManager->createQueryBuilder()
->select('t1, COUNT(t2.id) AS myCount')
->from('AcmeAppBundle:Table1', 't1')
->leftJoin('t1.fields', 't2') //fields is the one to many field name for the target entity AcmeAppBundle:Table2
->groupBy('t1.id')
->orderBy('myCount', 'DESC');
$result = $queryBuilder
->getQuery()->getResult();