2011-09-08 91 views
1

我有以下的關聯:CakePHP的:的hasMany模型關聯不遞歸獲取

網站 - 的hasMany - Sitekey Sitekey - 屬於關聯 - 網站

sites.id是主鍵 sitekeys.site_id是外鍵

現場模型: var $ hasMany = array('Sitekey');

查詢: $這 - >找到( '所有',陣列( '條件'=>數組( 'Sitekey.keyword_id'=> $鍵), '遞歸'=> 1));

以該關聯遞歸獲取(找到'all')不起作用。我試圖明確定義的類名,外鍵,等...

作爲最後的努力,我只是試圖改變網站模式: 變量$ hasOne =陣列(「Sitekey」);

當我做了遞歸查找'所有'對此,它進行連接並正確返回數據。任何想法我做錯了或我可以用來調試/修復問題的技術?

謝謝!

回答

0

難道這是簡單的東西嗎?像你這樣使用它的$ this關鍵字(假設我們在控制器中)將是控制器的一個實例,而不是模型。因此,您的結果將基於控制器的默認模型。確保你的控制器「使用」你試圖查詢的模型。

$results = $ModelName->find('all', array('conditions' => array('Sitekey.keyword_id' => $key), 'recursive' => 1)); 

我會建議看看可容納的行爲以及。你比使用遞歸獲得更多的控制權。

2

當你指定hasMany(和belongsTo,爲此)時,你是否嘗試過提供類和關鍵?

var $hasMany = array('Sitekey' => array(
    'className' => 'Site', 
    'foreignKey' => 'site_id' 
)); 

對我來說,這種情況發生在Inflector沒有正確單數化和複數化你的名詞時。我已經習慣了總是先檢查一下。

如果這確實起作用,那麼理論上你應該看看爲什麼它不能識別它。創建另一個模型欄(或知道的其他單詞),並將它與sitekey相同的關聯,並查看它是否在您的網站中有效。如果是這樣,再次,它很可能是Sitekey上的變形器。