我有三个实体,FeedFolder、Feed 和 FeedItem
一个 FeedFolder 有很多 Feed 一个 Feed 有很多 FeedItem
这些关系是在实体上定义的。
我想计算每个 Feed 中的 FeedItems 数量,同时也保持 FeedFolder->Feed 关系。
所以理想情况下,返回是一个 FeedFolder 数组,每个都有自己的 Feed 数组,每个 Feed 都会有一个项目计数。
<?php
$folders = [
$feedFolder1...,
$feedFolder2 => [
'id' => 2,
'feeds' => [
$feed1...,
$feed2 => [
'id' => 2,
'feedItemCount' => 23
]
]
]
];
我尝试了一些事情,我得到的最接近的结果是每个计数都作为包含提要和文件夹名称的行返回,所以我可以迭代它并将其恢复到我期望的结构,但我真的希望使用实体关系执行此操作的方法。
<?php
$feedRepo->createQuery('
SELECT ff.title, ff.id, f.name, f.id, COUNT(i) AS feedItemCount
FROM MyFeedBundle:Feed f
INNER JOIN f.feedFolder ff
INNER JOIN ff.feedFolderUser u
INNER JOIN f.feedItems i
WHERE i.isRead = 0
AND u.username = :username
GROUP BY ff.id, f
GROUP BY ff.title ASC, f.name ASC
');
(请注意,还有加入用户并仅过滤未读项目)
我先走的是 queryBuilder 路线,但要走这么远就更难了,当然,这对我来说都很好。