如何在TYPO3中编写sys_categories的查询

时间:2017-01-19 13:40:46

标签: php typo3 categories extbase

我在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 个答案:

答案 0 :(得分:3)

首先:您是如何在记录上启用分类的?它在后端是否正常工作?

如果为类别使用正确配置了TCA,则可以使用通用存储库方法来过滤结果。但是你必须使用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();

}