我想获得两个实体之间最近的十个条目(帖子,新闻)。
在我的控制器中:
$posts = $em->getRepository('AcmePostBundle:Post')->getTenLatest();
$news = $em->getRepository('AcmeNewsBundle:News')->getTenLatest();
如何合并这两个结果?类似的东西:
$latest = $posts->merge($news);
然后,按日期字段排序,限制10?
答案 0 :(得分:1)
我能够比较帖子和新闻的日期,并将最新版本添加到新阵列中。然后将新数组发送到rss feed包。
$news = $em->getRepository('ACMENewsBundle:News')->getLatest();
$posts = $em->getRepository('ACMEPostsBundle:Posts')->getLatest();
$latest = [];
$latest_news = 0;
$latest_post = 0;
for ($i = 0; $i < 7; $i++) {
if ($news[$latest_news]->getUpdated() > $posts[$latest_article]->getUpdated()) {
$latest[$i] = $lessons[$latest_news];
$latest_news++;
} else {
$latest[$i] = $posts[$latest_post];
$latest_post++;
}
}
$feed = $this->get('eko_feed.feed.manager')->get('article');
$feed->addFromArray($latest);
return new Response($feed->render('rss'));
答案 1 :(得分:0)
你没有。因为它们是两个不同的实体。
将它们传递给模板渲染器(默认树枝)
array('news'=> $news, 'posts' => $posts)
如果不使用@Template()
return $this->render('AcmeBlogBundle:Blog:index.twig',array('news'=> $news, 'posts' => $posts));
如果使用@Template()
return array('news'=> $news, 'posts' => $posts);
您可以使用{{ news.fieldname }}
或{{ posts.fieldname }}