Extbase Repository,findBy两个参数

时间:2014-05-06 17:44:08

标签: typo3 extbase typo3-6.1.x

在extbase中是否可以执行两个" findBy"同时发挥作用。

我的意思是,像这样:

$newsRepository->findByCategory($category)->findByAuthor($author);

我想获得具有特定类别的新闻,并由某位作者撰写。

可能?

2 个答案:

答案 0 :(得分:3)

'魔术探测器方法'仅适用于单个属性,因为stated in docs需要扩展存储库(伪代码)

public function findByCategoryAndAuthor(Tx_MyNews_Domain_Model_Category $category, Tx_MyNews_Domain_Model_Author $author){
    $query = $this->createQuery();
    $query->matching(
        $query->logicalAnd(
            $query->equals('category', $category),
            $query->equals('author', $author)
        )
    );
    return $query->execute();
}

并使用:

$newsRepository->findByCategoryAndAuthor($category, $author);

答案 1 :(得分:1)

尝试像

这样的事情

在您的存储库中

public function initializeObject() {
    $querySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Typo3QuerySettings');
    // don't add the pid constraint 
    $querySettings->setRespectStoragePage(FALSE);
    $querySettings->setIncludeDeleted(FALSE);
    $querySettings->setRespectSysLanguage(FALSE);
    $this->setDefaultQuerySettings($querySettings);
}   
public function findByCategoryAndAuthor($category,$author){
    $query = $this->createQuery();
    $constraints[] = $query->logicalAnd(
        $query->equals('category', $category),
        $query->equals('author', $author)
    );
    $query->matching($constraints);
    return $query->execute();
}

在您的控制器中

protected $yourRepository;

public function yourAction() {
    $result = $this->yourRepository->findByCategoryAndAuthor($category, $author);
    $this->view->assign('setToView', $result);
}