2017-01-19 1 views
0

Я написал небольшое расширение в extbase/fluid, и теперь я столкнулся с небольшой проблемой в репозитории.Как написать запрос для sys_categories в TYPO3

С моим расширением вы можете создать элемент, который использует 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-> как“ даже с утверждением, как этот

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

ответ

2

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

Когда ваш TCA правильно настроен для использования категории, вы можете использовать общие методы репозитория для фильтрации результата. Но вы должны комбинировать условие с вашим «title» -condition, используя 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(); 

} 
+0

спасибо за разделение этого решения. отлично работал для меня! – bluebyte