从类别中获取项目的最佳方法是什么。
我有一个大约有40个类别的项目,总共有3000个项目和4个级别。
我从TYPO3 self by collections中找到了一种方法,但是我必须将它们添加到类别手册中吗?
我看到TYPO3博客扩展采用另一种方式,即在模型类别中增加了一个“ posts”列和一个objecttorage。因此不必添加项目/帖子。
当我有3个类别的列表,每个类别有4到5个子类别,每个约有100到250个项目时,听起来像Blog的第二种方式听起来更好,但是这种性能更好吗?
谢谢
答案 0 :(得分:0)
您可以构建查询并从数据库中自己获取所有相关项。
// get QueryBuilder for table 'sys_category_record_mm'
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_category_record_mm');
// query the table
$result = $queryBuilder
->select('uid_foreign,tablenames')
->from('sys_category_record_mm')
->where($queryBuilder->expr()->eq('uid_local', $uidOfYourCategory))
->execute()
->fetchAll();
现在,$result
是一个数组,其所有子级的ID为$uidOfYourCategory
。您可以使用此数组从存储库中获取项目。
如果只需要tt_content中的项目,或者只需要一个名为tx_yourtable的表,则可以向查询中添加andWhere
,如下所示:
$result = $queryBuilder
->select('uid_foreign,tablenames')
->from('sys_category_record_mm')
->where($queryBuilder->expr()->eq('uid_local', $uidOfYourCategory))
->andWhere($queryBuilder->expr()->eq('tablenames', 'tx_yourtable'))
->execute()
->fetchAll();