Kev*_*yer 1 php recursion cakephp cakephp-3.0
我正在尝试使用 CakePHP 3.1 以递归方式(通过关联)获取数据
在 Cake 3 中,我可以使用“contain”键来获取下一级的关联数据。但我需要再升一级。有谁知道如何做到这一点?我阅读了文档,但没有找到任何东西,用谷歌它是一样的。
这 3 个级别的连接如下:
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();
];
}
Run Code Online (Sandbox Code Playgroud)
但在 CakePHP 2 中,有一个选项 recursive 可以控制获取关联数据的级别。
在 Cake2 中这recursive是一件非常愚蠢的事情。-1我们总是做的第一件事就是在 AppModel 中将其设置为避免不必要的数据获取。使用 contains始终是更好的选择。recursive我根本不会使用,尤其是对于更深层次的使用。
与 Cake2 中一样,包含 still 也能够获取多于一层的深层关联。
$this->find()->contain([
'FirstLevel' => [
'SecondLevel' => [
'ThirdLevel'
]
]
])->all();
Run Code Online (Sandbox Code Playgroud)