2012-06-30 49 views
0

我在使用model-> find()調用來尊重我創建的belongsTo關聯時遇到問題。cakePHP發現不尊重belongsTo關聯

這是該協會:

var $belongsTo = array('User' => array('className' =>'User', 
             'foreignKey' => 'id', 
            'fields'  => array('username') 
             ) 
        ); 

這裏是查找電話:

$this->set('broadcasters_list', $this->Broadcaster->find('all', 
                 array('fields'=>array('id') 
                 ))); 

現在,一個非常奇怪的事情;我對Broadcaster模型進行了分頁調用,調用時尊重belongsTo關聯,並從User模型返回必要的信息。

照顧, 李

編輯:

我看了一下查詢正在修建,這裏是我有:

對於find命令:

SELECT `Broadcaster`.`id` FROM `broadcasters` AS `Broadcaster` LEFT JOIN `users` AS `User` ON (`Broadcaster`.`id` = `User`.`id`) LEFT JOIN `images` AS `profile_image` ON (`profile_image`.`user_id` = `Broadcaster`.`id` AND image_type = 3) WHERE 1 = 1 

撥打電話:

SELECT `Broadcaster`.`id`, `Broadcaster`.`key_id`, `Broadcaster`.`session_id`, `Broadcaster`.`broadcast_mode`, `Broadcaster`.`next_guest_id`, `Broadcaster`.`one_to_one_credits`, `Broadcaster`.`one_to_many_credits`, `Broadcaster`.`avilable_for_private`, `Broadcaster`.`connect_type`, `Broadcaster`.`commission`, `Broadcaster`.`credits`, `Broadcaster`.`enabled`, `User`.`username`, `profile_image`.`file_id` FROM `broadcasters` AS `Broadcaster` LEFT JOIN `users` AS `User` ON (`Broadcaster`.`id` = `User`.`id`) LEFT JOIN `images` AS `profile_image` ON (`profile_image`.`user_id` = `Broadcaster`.`id` AND image_type = 3) WHERE `enabled` = 1 LIMIT 10 

除了被檢索的字段外,它們看起來都是一樣的。我在那裏錯過了什麼?

回答

0

您有外鍵錯誤。外鍵是當前表中鏈接到外表中的鍵的值,所以在這種情況下它應該是user_id

var $belongsTo = array('User' => array('className' =>'User', 
             'foreignKey' => 'user_id', 
            'fields'  => array('username') 
             ) 
        ); 
+0

你好。我已經嘗試過了,但沒有奏效。但是,即使這樣做,也不能解釋爲什麼分頁調用會起作用,但find()調用不會。正在構建的查詢在處理從用戶獲取信息的部分中是相同的。 –

+0

我發現如果你不使用默認的外鍵「 _id」,Cakephp可能會變成iffy – paullb