Как написать запрос для sys_categories в TYPO3

Я написал небольшое расширение в extbase / Fluid, и теперь я столкнулся с небольшой проблемой в хранилище.

С моим расширением вы можете создавать элементы, которые используют system_categories для категоризации (аналогично каждому расширению новостей).
Я хочу показать все элементы с категорией x на странице X и все категории y на странице Y.

Я знаю, что мне нужно написать запрос в моем itemRepository.php, но я не могу заставить его работать, так что вот мой код хранилища:

 public function findSearchForm($limit)
{

$query = $this->createQuery();

$query->getQuerySettings()->setLanguageUid($GLOBALS["TSFE"]->tmpl->setup['config.']['sys_language_uid']);
$query->matching(
$query->like('title','%'.$search.'%')
);

# $query->setOrderings(array('title' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING));return $query->execute();
}

Я попытался расширить запрос после «query-> like» даже с помощью такого утверждения

$query->statement("SELECT * FROM sys_category_record_mm WHERE uid_local = '11'")

1

Решение

Прежде всего: как вы включили категоризацию в своих записях? Правильно ли он работает в бэкэнде?

Когда ваш TCA правильно настроен для использования категории, вы можете использовать общие методы хранилища для фильтрации результатов. Но вы должны объединить условие с вашим условием title, используя AND.

Попробуйте что-то вроде этого:

public function findSearchForm($limit)
{

$query = $this->createQuery();
$constraints = array();
$yourCategory = 11;

// Your $search-variable seems to be undefined?
//$constraints[] = $query->like('title','%'.$search.'%');
$constraints[] = $query->contains('categories', $yourCategory);

$query->matching(
$query->logicalAnd($constraints)
);

// I think you dont need this...
$query->getQuerySettings()->setLanguageUid($GLOBALS["TSFE"]->tmpl->setup['config.']['sys_language_uid']);

return $query->execute();

}
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector