CakePHP 3递归获取相关数据

时间:2015-10-28 16:28:45

标签: php cakephp recursion cakephp-3.0

我正在尝试使用CakePHP 3.1以递归方式(通过关联)获取数据

在Cake 3中,我可以使用“包含”键来获取下一级别的相关数据。但我需要再提一个级别。有谁知道如何做到这一点?我阅读了文档,但没有找到任何内容,谷歌也是如此。

3个级别的连接方式如下: OperationalCostInvoice (belongsTo Object) -> Object (hasMany OperationalCostTypes) -> OperationalCostType

使用OperationalCostInvoice->get($object_id, ['contain' => 'Object'])我可以获得与OperationalCostInvoice相关联的Object,但我也想从Object中获取OperationalCostTypes(如果可能)只调用一次。

我不需要关于关联链接的琐事实体链接的原因是这样我可以轻松实现历史记录功能。

提前致谢!

1 个答案:

答案 0 :(得分:4)

  

我只是想要一个函数调用(在Table对象上)来获取所有内容。我知道需要多个查询。

然后创建自己的表方法然后将所有结果返回到一个数组中,或实现您想要的任何内容并将其返回。

public function foo() {
    return [
        'one' => $this->find()...->all();
        'two' => $this->Asssoc->find()...->all();
    ];
}
  

但是在CakePHP 2中有一个递归选项,可以控制获取多少级别的相关数据。

{2}在Cake2中是一个非常愚蠢的事情。我们一直做的第一件事就是在AppModel中将其设置为recursive,以避免不必要的数据提取。使用contains 总是是更好的选择。我会远离使用-1尤其是更深层次。

还包含仍然像Cake2一样,能够获取多个级别的深层关联。

recursive