Extbase / TYPO3 - 如何生成查询

时间:2015-05-10 19:09:56

标签: typo3 extbase

我的extbase模型" show",有很多记录"制作"。生产可以结束"或者"当前"。它在制作模型中宣布。

在&#34;显示&#34; - 显示我想列出当前的制作和结束的制作。目前,只能使用<f:for each="{productions}"...>和条件列出它。

但我希望这样做<f:for each="{currentProductions}"...<f:for each="{endedProductions}"...

所以我为我的作品库写了一个查询:

public function aktuelleProduktionen(Musicalplanet\MpDatenbank\Domain\Model\Produktionen $produktionen) {
    $query = $this->createQuery();
    $query->matching(
        $query->logicalOr(
            $query->equals('openend', '1'),
            $query->equals('abgelaufen', '0')
            )
        );
    return $query->execute();
}

但现在我真的不知道如何让它发挥作用。 对我来说,不清楚在哪里添加它,就像我需要它一样使用它。

1 个答案:

答案 0 :(得分:1)

首先,我认为您的查询方法应该更像这样才能获得节目的制作:

public function aktuelleProduktionen(Musicalplanet\MpDatenbank\Domain\Model\Show $show) {
  $query = $this->createQuery();
  $query->matching(
      $query->logicalAnd(
          $query->equals('show', $show->getUid()),
          $query->logicalOr(
              $query->equals('openend', '1'),
              $query->equals('abgelaufen', '0')
          )
      )
  );
  return $query->execute();
}

我想,当你有一个show-Model时,你也有一个Show-Controller。在其中,您应该注入您的ProductionRepository:

/**
 * programRepository
 *
 * @var \Musicalplanet\MpDatenbank\Domain\Model\ProduktionenRepository
 * @inject
 */
protected $produktionenRepository;

现在,您可以使用自定义查询方法从存储库中获取当前产品。在你的showAction()中做到这一点。

public function showAction(Musicalplanet\MpDatenbank\Domain\Model\Show $show) {
  $currentProductions = $this->produktionenRepository->aktuelleProduktionen($show);
  $this->view->assign('currentProductions', $currentProductions);
}

或多或少,这应该有效。希望有所帮助。