簡體   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