【问题标题】:TYPO3 extension custom repository = empty resultTYPO3 扩展自定义存储库 = 空结果
【发布时间】:2018-01-02 14:28:35
【问题描述】:

我正在开发 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() 它可以工作,那么问题必须位于我的自定义代码上,而不是控制器或 repo。

【问题讨论】:

    标签: typo3 typo3-6.2.x typo3-extensions


    【解决方案1】:

    我想你忘记了设置StoragePid。所以,首先检查storagePid 是否设置。如果没有设置,则先设置它并清除Install Tool缓存并检查增益。

    用于设置 StoragePid。

    -: 转到主页> 模板,然后转到常量编辑器并设置StoragePID 页面的记录。

    【讨论】:

      【解决方案2】:

      findByUid 将始终找到您的实体,因为它绕过了任何其他约束。

      Extbase 存储库基于它们查询的实体,这意味着它们不直接查询数据库,而是查询实体的properties 的持久性管理器。 (这不是 100% 准确,但它可以作为一张好照片)

      要从不同语言获取实体(因为您的代码查询该字段),您应该使用QuerySettings 修改目标语言约束:

      $query->getQuerySettings()->setRespectStoragePage(false);
      

      【讨论】:

      • 您好塞德里克,感谢您的回答。这种方法的结果相同。我只想在当前的实体范围内迷路,并获得一个具有特定 pid 和特定语言 id 的实体。这听起来很简单,但对我来说不是^^如何?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      相关资源
      最近更新 更多