如果我有一个公司实体,与用户实体有一对多关联,我如何获得公司实体列表,按用户数量排序?
答案 0 :(得分:5)
这是我的解决方案,但它可能不是最佳方式:
SELECT
c, COUNT(u.id) as num_users
FROM
Acme\Model\Company c
LEFT JOIN c.users u
GROUP BY
c.id
ORDER BY
num_users DESC
在对结果进行保湿后,您将获得如下数组:
array(
array(
0 => /* entity instance */,
'num_users' => 123
),
array(
0 => /* entity instance */,
'num_users' => 111
),
// ...
)
所以你必须过滤结果:
return array_map(
function ($result) { return $result[0]; },
$results
);
就是这样!
也许你可以避免过滤部分调整水化部分。