我有三个实体,FeedFolder,Feed和FeedItem
FeedFolder有很多Feed Feed有许多FeedItems
这些关系是在实体上定义的。
我想在每个Feed中计算FeedItem,同时保持FeedFolder-> Feed关系。
理想情况下,返回的是一个FeedFolder数组,每个FeedFolder都有一个Feed数组,每个feed都有一个项目数。
<?php
$folders = [
$feedFolder1...,
$feedFolder2 => [
'id' => 2,
'feeds' => [
$feed1...,
$feed2 => [
'id' => 2,
'feedItemCount' => 23
]
]
]
];
我尝试了一些东西,最接近的结果是每个计数都会返回包含feed和文件夹名称的行,所以我可以迭代这个并将它恢复到我期待的结构但是我真的我希望能够使用实体关系来实现这一目标。
<?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路线,但是这很难实现这一点,当然,对我来说当然也不错。