我想在我的项目中使用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
答案 0 :(得分:0)
ok首先,所有extbase查询总是会为您提供完整的对象。这就是为什么你需要使用statement
来实现你的目标。获得结果的第二个技巧是你需要设置为以数组形式接收结果。因为extbase试图将您的语句映射到与存储库相关的模型对象
您可以使用setReturnRawQueryResult
更改退货数据的类型:您可以在此处详细了解http://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html