extbase查询构建器将一个存储库注入另一个存储库

时间:2017-01-30 13:43:21

标签: typo3 extbase

我有一个关于extbase的问题,如果我需要将一个reposotory注入另一个reposotry以获取查询中的连接条件我需要做什么呢?

例如此查询

     $query = $this->createQuery()
      ->statement('
           SELECT tx_casmarketing_domain_model_category.uid, tx_casmarketing_domain_model_category.name
           FROM tx_casmarketing_domain_model_category, tx_casmarketing_domain_model_ad
           WHERE tx_casmarketing_domain_model_ad.ad_cat = tx_casmarketing_domain_model_category.uid ')

我试图通过

访问此查询
  $query = $this->createQuery();
       $query->matching(
               );

基本上我正在尝试将一个广告存储库注入类别存储库,因为模型中没有为此定义关系。

我的模型包含广告关系的类别,所以当我通过adRepository访问广告时,我会自动访问cateogrys以及adCategory存储库,但是当我需要为广告选择的类别时我只能通过加入访问来访问vise-virsa查询因为我的模型中没有这种关系。我需要在广告中使用该类别列出广告,其中包含相应广告类别的广告...

this-> adrepository-> findAll()我使用选定的cateogry自动访问广告,因为这种关系已存在于我的模型中,但我需要一些$ this-> categoryRepository($ this-> adrepository-> finAll())

在下拉列表中我只需要当前有效的类别。我可以通过上面提到的简单查询来访问这个,但我需要通过extbase查询的东西,因为我可以使用typo3的buitin functionaly像开始和结束的时间戳以及我想要的隐藏内置功能

  ->statement('
      SELECT tx_casmarketing_domain_model_category.uid,      tx_casmarketing_domain_model_category.name
          FROM tx_casmarketing_domain_model_category, tx_casmarketing_domain_model_ad
          WHERE tx_casmarketing_domain_model_ad.ad_cat = tx_casmarketing_domain_model_category.uid ')  this is working but i want to conver it thourgh extbase query

1 个答案:

答案 0 :(得分:0)

要使其与常用存储库方法一起使用,您必须在TCA中定义对象关系(并且不确定是否在模型中)。然后,您可以使用$ query-> equals(' category',$ category)或$ query->包含(' category',$ category)等功能。

您的查询的目的是什么?您正在尝试查找由" ad"?

分配的所有类别