Как получить предметы из sys_categories - PullRequest
0 голосов
/ 15 февраля 2019

Каков наилучший способ получить предметы из категорий.

У меня есть проект с примерно 40 категориями и всего 3000 предметов и 4 уровня.

Я нашел путь от TYPO3Самостоятельно по коллекциям, но я должен добавить их в руководство по категориям?

Я видел, что расширение блога TYPO3 идет другим путем с помощью дополнительного столбца "posts" и хранилища объектов в категориях моделей.Поэтому нет необходимости добавлять элементы / сообщения.

Каким-то образом второй способ, как в блоге, звучит лучше, но он эффективен, когда у меня есть список из 3 категорий с каждой из 4-5 подкатегорий и примерно по 100до 250 наименований?

Спасибо

1 Ответ

0 голосов
/ 15 февраля 2019

вы можете создать запрос и получить все связанные элементы самостоятельно из БД.

// 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 - это массив со всеми дочерними элементами категории с идентификатором $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();
...