2013-10-25 34 views
0

表我試圖找出是否有我的模型正確地連接起來,實現以下方式:正確連接2代深,CakePHP的

我有3個表,客戶端 - >舉措 - >里程碑。

在客戶端中,我有:

public $hasMany = array('Initiative' ); 

在計劃模式,我有:

public $belongsTo = 'Client'; 
public $hasMany = 'Milestone' 

和里程碑有:

public $belongsTo = 'Initiative'; 

使用公共$遞歸= 2;在客戶端模式,我能夠得到嵌套在結果的倡議里程碑,使他們看起來像這樣...

array(2) { 
["Client"]=> 
array(3) { 
    ["id"]=> 
    string(1) "3" 
    ["name"]=> 
    string(17) "Company" 
} 
["Initiative"]=> 
array(5) { 
    [0]=> 
    array(8) { 
    ["id"]=> 
    string(1) "6" 
    ["client_id"]=> 
    string(1) "3" 
    ["Milestone"]=> 
    array(4) { 
     [0]=> 
     array(6) { 
     ["id"]=> 
     string(1) "1" 
     ["initiative_id"]=> 
     string(1) "6" 
     } 
     [1]=> 
     array(6) { 
     ["id"]=> 
     string(1) "2" 
     ["initiative_id"]=> 
     string(1) "6" 
     } 

或者用短手:

result 
    [client] 
    [initiative] 
     [milestone]  

但什麼爲了方便起見,我想讓模型返回里程碑,因爲它自己的數組不是嵌套在主動中。所以,

result 
    [client] 
    [initiative] 
    [milestone] 

我想我需要在我的模型中設置某種自定義查詢。我怎樣才能做到這一點?

+0

可能有很多'舉措',因此里程碑必須嵌套在舉措之下。 –

回答

0

我想,這可能是不可能的,因爲

客戶---的hasMany --->倡議

的倡議--- ---的hasMany>里程碑

所以如果你得到一個客戶信息,然後多個計劃將檢索,如果你會得到一個計劃,那麼多個里程碑將在那裏。

如果您仍想要合併所有里程碑並顯示在第一級,那麼您必須遍歷數組值並手動檢索里程碑。