TYPO3 Extbase按子记录COUNT

时间:2014-01-24 10:50:55

标签: count sql-order-by typo3 children extbase

我有这个型号:

News -> 1:n -> Visit
News -> m:n -> FrontendUserGroup
FrontendUser -> 1:n -> Visit

因此,访问显示哪个FrontendUser访问了哪个新闻。

我需要获取当前登录的FrontendUser的所有新闻。 所有新闻都应该通过“datetime”属性订购DESC,但首先应该出现登录用户尚未访问过的新闻。

这是给我正确结果的SQL:

SELECT 
    (SELECT COUNT(*) FROM tx_xxnews_domain_model_visit v WHERE v.news = n.uid AND v.fe_user = fu.uid) AS visits, 
    n.*

FROM tx_xxnews_domain_model_news AS n
    JOIN tx_xxnews_news_frontendusergroup_mm nfg ON n.uid = nfg.uid_local
    JOIN fe_users fu ON FIND_IN_SET(nfg.uid_foreign, fu.usergroup)

WHERE fu.uid = 2271 # logged in user id

ORDER BY visits ASC, n.datetime DESC

有没有办法用Extbase获得这个结果?

我在NewsRepository中试过这个:

protected $defaultOrderings = array(
    'COUNT(visits)' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
    'datetime' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING
);

但它似乎不起作用。

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

实际上这是不可能的,因为$ defaultOrderings需要属性,而不是SQL字段名称或函数。

据我所知,唯一的可能是使用$query->statement('[YOUR QUERY]');