我正在使用Typo3 6.2,下面是我的控制器的摘录:
$event_to_display = $this->eventRepository->findByCustom();
$this->view->assign('event', $event_to_display);
这是我的自定义存储库:
public function findByCustom()
{
$query = $this->createQuery();
$query->matching($query->equals('sys_language_uid', 0));
return $query->execute();
}
但结果是空的!我相信我的$ query-> equals()操作不起作用,但我不明白为什么。因此,我想补充第二个条件:怎么做?
编辑:如果我使用findByUid()它可以工作,那么问题必须位于我的自定义代码上,而不是控制器或回购。
答案 0 :(得分:1)
我想你忘记了集StoragePid
。因此,首先检查storagePid
是否已设置。如果未设置,则先将其设置并清除Install Tool
缓存并检查增益。
对于设置的StoragePid。
- :转到主页>模板,然后转到常量编辑器并将StoragePID
页面与您的记录一起设置。
答案 1 :(得分:0)
findByUid
将始终找到您的实体,因为它会绕过任何其他约束。
Extbase存储库基于他们查询的实体,这意味着他们不会直接查询数据库,而是查询实体的属性的持久性管理器。 (这不是100%准确,但它可以作为一张好照片)
要从不同的语言中获取实体(因为您的代码在字段中查询),您应该使用QuerySettings
来修改目标语言约束:
$query->getQuerySettings()->setRespectStoragePage(false);