Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 存储库A引用了存储库B。如何获取所有A,其中B.field=';x';?_Typo3_Extbase - Fatal编程技术网

Typo3 存储库A引用了存储库B。如何获取所有A,其中B.field=';x';?

Typo3 存储库A引用了存储库B。如何获取所有A,其中B.field=';x';?,typo3,extbase,Typo3,Extbase,我试图弄清楚如何获取引用元素B在特殊字段中有值的所有元素A 假设我有以下模型: Person id name active companyref 1 Pers1 1 1 1 Pers2 1 2 Company id name filter 1 Comp1 1 1 Comp2 5 当我想要获取所有活动人员时,我在我的存储库中执行以下操作: function findAllActive() { $query = $thi

我试图弄清楚如何获取引用元素B在特殊字段中有值的所有元素A

假设我有以下模型:

Person
id  name    active  companyref
1   Pers1   1       1
1   Pers2   1       2

Company
id  name    filter
1   Comp1   1
1   Comp2   5
当我想要获取所有活动人员时,我在我的存储库中执行以下操作:

function findAllActive() {
 $query = $this->createQuery();
 return $query->matching(
            $query->equals('aktiv', 1)
        )->execute();
}
现在我的问题是,我如何获得refCompany获得filter=5的所有人员


编辑:在回答freshp dont work之后,我发布了我的确切案例:

这将起作用(我自己编写sql):

这是行不通的(我只写了一半sql):

我得到错误:致命错误:调用成员函数getParentKeyFieldName()

除了“person.firmaref.paketstufe”,我还尝试了:

  • 菲尔马雷夫·帕克特斯图夫
  • p、 菲尔马雷夫·帕克特斯图夫
  • 公司名称:paketstufe
  • 等等
我真正想要的是这样的东西(我根本不需要编写sql):

我怎样才能让它工作?

你可以像这样做:

function findAllActive() {
 $query = $this->createQuery();
 return $query->matching(
      $query->locicalAnd(
            $query->equals('companyref.filter', 5),
            $query->equals('active', 1)
      )
 )->execute();
}

我试着这样做,但不管我做什么,我都会得到:致命错误:在/var/www/hosts/dev.itrocks.next-linux2.ch/typo3/sysext/extbase/Classes/Persistence/Storage/typo3dbackend.php的第660行对非对象调用成员函数getParentKeyFieldName()。也许你现在可以找出我的问题所在了。你使用的是哪种typo3版本和extbase版本?对于链接,是缺少的cammelCase$查询->等于('firmaRef.paketstufe',intval($paketstufe)
function findAllActiveForPaketstufe($paketstufe) { 
 $query = $this->createQuery();
 $sql="SELECT p . * 
FROM  `tx_myext_domain_model_person` AS p
INNER JOIN tx_myext_domain_model_firma AS f ON f.uid = p.firma_ref";

 return $query->matching(
            $query->logicalAnd(
                $query->equals('aktiv', 1),
                $query->equals('person.firmaref.paketstufe', intval($paketstufe))
            )
        )->execute();
}
 $query = $this->createQuery();
 return $query->matching(
      $query->locicalAnd(
            $query->equals('companyref.filter', 5),
            $query->equals('active', 1)
      )
 )->execute();
function findAllActive() {
 $query = $this->createQuery();
 return $query->matching(
      $query->locicalAnd(
            $query->equals('companyref.filter', 5),
            $query->equals('active', 1)
      )
 )->execute();
}