Symfony,由OneToMany财产命令

时间:2014-11-10 04:27:13

标签: mysql symfony doctrine-orm

我在创建SQL查询时遇到问题。

我有2个输入,YouTubeVideo和Views。

YouTubeVideo可以有很多视图,视图在ViewsCount属性下被视为视图的“包”。

现在,假设我有1个YouTubeVideo,包含3个观看次数。 视图[0] .ViewsCount = 200; 视图[1] .ViewsCount = 100; 视图[2] .ViewsCount = 300; 总数将是600。

我如何构建一个查询,查询所有youtube视频并按照他们拥有的总观看次数对其进行排序?

是否可以在SQL中执行此数学运算?

Atm看起来像这样:

    $repository = $this->em->getRepository('YTScraperBundle:YouTubeVideo');
    $query = $repository->createQueryBuilder('p');
    $query->setMaxResults(self::PR_PAGE);
    $query->setFirstResult($firstResult);
    $query = $query->getQuery();
    $youTubeVideos = $query->getResult();

    // foreach ($youTubeVideos as $youTubeVideo ... get all views add them etc.

然后我正在使用usort:

    usort($youTubeVideos, array('YT\ScraperBundle\Entity\YouTubeVideo', "compareViews"));

但这根本不理想,因为我对查询使用限制。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用DQL而不是注释。

SELECT y FROM YoutubeVideos y JOIN y.views v GROUP BY y.id ORDER BY SUM(v.viewCount)