繁体   English   中英

CakePHP 3递归获取相关数据

[英]CakePHP 3 Fetch associated data recursive

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

在Cake 3中,我可以使用“包含”键来获取下一级关联数据。 但是我需要再获取一个级别。 有谁知道如何做到这一点? 我读了文档,但在那没找到任何东西,与Google一样。

这三个级别是这样连接的: OperationalCostInvoice (belongsTo Object) -> Object (hasMany OperationalCostTypes) -> OperationalCostType

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

我不需要有关关联链接的提示,像这样链接实体的原因是,我可以轻松实现历史记录功能。

提前致谢!

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

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

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

但是在CakePHP 2中,有一个选项递归,它控制着提取关联数据的级别。

在Cake2中, recursive非常愚蠢。 我们一直要做的第一件事是在AppModel中将其设置为-1 ,以避免不必要的数据获取。 始终使用contain是更好的选择。 我根本不会使用recursive尤其是对于更深层次的用户。

就像在Cake2中一样,contain仍然能够获取多个级别的深层关联。

$this->find()->contain([
    'FirstLevel' => [
        'SecondLevel' => [
            'ThirdLevel'
        ]
    ]
])->all();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM