Typo3 如何使用Extbase 6.2按引用量对对象进行排序
在我的extbase 6.2扩展中,我希望用户从选择输入中选择一些内容,我希望这些项目按使用情况排序。Typo3 如何使用Extbase 6.2按引用量对对象进行排序,typo3,extbase,typo3-6.2.x,Typo3,Extbase,Typo3 6.2.x,在我的extbase 6.2扩展中,我希望用户从选择输入中选择一些内容,我希望这些项目按使用情况排序。 我在执行此操作之前对对象进行了排序: /** * The repository for Expertises */ class ExpertiseRepository extends \TYPO3\CMS\Extbase\Persistence\Repository { // Order by BE sorting protected $defaultOrderings
我在执行此操作之前对对象进行了排序:
/**
* The repository for Expertises
*/
class ExpertiseRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
// Order by BE sorting
protected $defaultOrderings = array(
'name' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
);
}
但现在我想按引用的数量对它们进行排序,然后按它们的名称进行第二次排序。我不知道引用字段在哪里,或者它的名称是什么-我刚刚在这里的后端看到它:有人知道怎么做吗?这些引用存储在所谓的refindex中,它位于表
sys\u refindex
中
因此,要获得计数,您需要使用sys\u refindex左连接表,如下所示:
SELECT t.uid, …, COUNT(*) AS refcount
FROM tx_myext_table t
LEFT JOIN sys_refindex ri
ON t.uid = ri.recuid AND ri.tablename = "tx_myext_table"
GROUP BY ri.uid, ri.tablename
关于refindex:TYPO3的一点背景知识:当通过官方API(例如,在后端表单中保存记录)进行更改时,它会在内部处理并在每次记录更改时进行更新。如果通过FE(Extbase)操作记录,它也会被更新。例如,添加关系并调用repository
update()
方法?或者需要通过CLI运行此任务:typo3/CLI\u dispatch.phpsh lowlevel\u refindex-e
?此外,我很好奇这些是否真的是来自sys\u refindex
的数字,而不是来自列本身,bcs afaik typo3将关系数准确地存储在关系字段中。因此,对于按相对数排序的任务,可能不需要加入sys\u refindex
表。