如何在 TYPO3 中为 sys_categories 编写查询

How to write a query for sys_categories in 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'")

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

当您的 TCA 正确配置为类别使用时,您可以使用常见的存储库方法来过滤结果。但是您必须使用 AND.

将条件与您的 "title"-条件结合起来

尝试这样的事情:

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();

}