TYPO3 扩展自定义存储库 = 空结果
TYPO3 extension custom repository = empty result
我正在开发 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() 它有效,那么问题一定出在我的自定义代码上,而不是控制器或存储库上。
findByUid
总能找到您的实体,因为它绕过了任何其他限制。
Extbase 存储库基于它们正在查询的实体,这意味着它们不直接查询数据库,而是查询实体的 properties 的持久性管理器。 (这不是 100% 准确,但可以作为一张好图)
要从不同的语言获取实体(因为您的代码查询该字段),您应该使用 QuerySettings
修改目标语言约束:
$query->getQuerySettings()->setRespectStoragePage(false);
我想你忘了集合 StoragePid
。因此,首先检查 storagePid
是否设置。如果未设置,则先设置它并清除 Install Tool
缓存并检查增益。
用于设置 StoragePid。
-: 进入主页 > 模板,然后进入常量编辑器并设置 StoragePID
页面的记录。
我正在开发 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() 它有效,那么问题一定出在我的自定义代码上,而不是控制器或存储库上。
findByUid
总能找到您的实体,因为它绕过了任何其他限制。
Extbase 存储库基于它们正在查询的实体,这意味着它们不直接查询数据库,而是查询实体的 properties 的持久性管理器。 (这不是 100% 准确,但可以作为一张好图)
要从不同的语言获取实体(因为您的代码查询该字段),您应该使用 QuerySettings
修改目标语言约束:
$query->getQuerySettings()->setRespectStoragePage(false);
我想你忘了集合 StoragePid
。因此,首先检查 storagePid
是否设置。如果未设置,则先设置它并清除 Install Tool
缓存并检查增益。
用于设置 StoragePid。
-: 进入主页 > 模板,然后进入常量编辑器并设置 StoragePID
页面的记录。