Fab*_*itz 4 php typo3 extbase typo3-flow
我正在为一个网站编写TYPO3扩展程序.由于我使用的是Extbase Framework,因此我有一个Repository类(Tx_Extbase_Persistence_Repository),我连续执行两个SQL查询:
$query1 = $this->createQuery();
$query1->statement($sql1);
$res1 = $query1->execute();
$query2 = $this->createQuery();
$query2->statement($sql2);
$res1 = $query2->execute();
Run Code Online (Sandbox Code Playgroud)
双方$res1和$res2包含Tx_Extbase_Persistence_QueryResult.现在我想返回合并后的结果,我不知道如何完成.返回原始数组不是一个选项,因为我依赖于QueryResult类的函数,我也想避免组合sql(UNION,JOIN).我已经尝试过了:
$myResult = $this->objectManager->create('Tx_Extbase_Persistence_ObjectStorage')
foreach($res1 as $obj) {
$myResult->attach($obj);
}
//foreach $res2
Run Code Online (Sandbox Code Playgroud)
..但这会抛出一个错误("could not determine the child object type")
那么你如何正确地结合两个Tx_Extbase_Persistence_QueryResult?
编辑:
通过组合,我的意思是代替两个单独的QueryResults我想要只包含两个结果$query1以及$query2.遗憾的是,SQL-UNION或JOIN不是一个选项.
小智 7
QueryResult实现了QueryResultInterface,它扩展了ArrayAccess.有了这个,你可以使用offsetSet方法.
foreach ($res2->toArray() as $result) {
$res1->offsetSet(($res1->count()), $result);
}
Run Code Online (Sandbox Code Playgroud)
QueryResult $ res1现在也包含来自$ res2的对象.
| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |