我试图弄清楚如何获得所有元素 A,其中引用的元素 B 在特殊字段中具有值。
可以说我有以下型号:
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):
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
WHERE paketstufe =3";
return $query->matching(
$query->equals('aktiv', 1)
)->execute();
}
这不起作用(我只写了一半的sql):
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();
}
我收到错误:致命错误:调用成员函数 getParentKeyFieldName()
而不是“person.firmaref.paketstufe”我也试过:
- Firmaref.paketstufe
- p.firmaref.paketstufe
- Firma_ref.paketstufe
- 等等
而我真正想要的是这样的(我根本不需要写sql):
$query = $this->createQuery();
return $query->matching(
$query->locicalAnd(
$query->equals('companyref.filter', 5),
$query->equals('active', 1)
)
)->execute();
我怎样才能让它工作?