如何从sys_categories获取项目

问题描述 投票:0回答:1

什么是从类别中获取项目的最佳方式。

我有一个大约40个类别的项目,总共3000个项目和4个级别。

我从TYPO3 self中找到了一种收藏方式,但我必须将它们添加到类别手册中吗?

我看到TYPO3博客扩展通过额外的列“posts”和模型类别中的对象存储采取了另一种方式。所以没必要添加项目/帖子。

不知怎的,像博客那样的第二种方式,听起来更好但是这是高性能,当我有3个类别的列表,每个4到5个子类别,每个大约100到250个项目?

谢谢

typo3 categories extbase sys
1个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.