在extbase中是否可以执行两个" findBy"同时发挥作用。
我的意思是,像这样:
$newsRepository->findByCategory($category)->findByAuthor($author);
我想获得具有特定类别的新闻,并由某位作者撰写。
可能?
答案 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);
}