Typo3 Extbase如何获得关系= x的所有对象?

时间:2015-03-29 19:57:07

标签: typo3 fluid extbase

我想在我的项目中使用Extbase。但我没有得到这个查询工作:

SELECT
    tx_domain_model_A.*,
    tx_domain_model_B.*
FROM
    tx_domain_model_A LEFT JOIN tx_domain_model_B ON (tx_domain_model_B.uid IN (tx_domain_model_A.b_I_D))
WHERE
    tx_domain_model_B.von >= ?
ORDER BY tx_domain_model_B.von

结果应该是这样的:

A.uid   A.b_I_D B.uid   B.von
1       5,8,3   5       abc
1       5,8,3   8       def
1       5,8,3   3       ghi
2       1,2     1       123
2       1,2     2       456
3       1       1       123

我用:

$query = $this->createQuery();
$query->matching($query->greaterThanOrEqual('bID.von',date('U')));

但是,所有子对象都是空的。我认为这来自: http://fossies.org/dox/typo3_src-6.2.9/Typo3DbQueryParser_8php_source.html

function addUnionStatement ...
...

    // TODO check if there is another solution for this
    785         $sql['keywords']['distinct'] = 'DISTINCT';

所以我用$query->statement(...)来做,但这也行不通。

我希望从表A获得比今天大A.B_I_D.von的所有对象。表B(= A.B_I_D)是n:1关系(A=n:B=1)。如何从A中获取一个以上的对象?并且可以在Fluid中使用它吗?

我使用Typo3 6.2

1 个答案:

答案 0 :(得分:0)

ok首先,所有extbase查询总是会为您提供完整的对象。这就是为什么你需要使用statement来实现你的目标。获得结果的第二个技巧是你需要设置为以数组形式接收结果。因为extbase试图将您的语句映射到与存储库相关的模型对象

,所以需要它

您可以使用setReturnRawQueryResult更改退货数据的类型:您可以在此处详细了解http://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html