首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP 3获取关联数据递归

CakePHP 3获取关联数据递归
EN

Stack Overflow用户
提问于 2015-10-28 16:28:45
回答 1查看 4.4K关注 0票数 1

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

在Cake 3中,我可以使用“包含”键来获取下一级别的asociated数据。但我得再拿一层。有人知道怎么做吗?我读了那些文档,但没有在那里找到任何东西,与谷歌是一样的。

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

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

我不需要关于关联链接的提示,像这样链接实体的原因是我可以很容易地实现一个历史函数。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-28 17:12:30

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

只需创建您自己的表方法,然后在一个数组中返回所有结果,或者实现任何您想要的结果并返回它。

代码语言:javascript
复制
public function foo() {
    return [
        'one' => $this->find()...->all();
        'two' => $this->Asssoc->find()...->all();
    ];
}

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

recursive在Cake2是个相当愚蠢的东西。我们一直做的第一件事就是在-1中将其设置为AppModel,以避免不必要的数据获取。使用包含总是更好的选择。我完全不使用recursive,尤其是在更深的层次上。

与Cake2中的情况一样,contain仍然能够获取多个级别的深度关联。

代码语言:javascript
复制
$this->find()->contain([
    'FirstLevel' => [
        'SecondLevel' => [
            'ThirdLevel'
        ]
    ]
])->all();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33396461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档