2012-09-23 62 views
0

也許這是因爲我已經累死了,但我完全錯過了一些東西。我繼承了一個來自朋友的蛋糕1.3應用程序,他正確設置了表格,但我缺少一些數據。當我打印數據陣列時,我期望的是:檢索cakephp中的模型數據的'belongsTo'部分

Array 
(
[Listing] => Array 
    (
     [id] => 74 
     [listing_name] => El Toro 
     [category_id] => 3 
     [location_id] => 2 
     [long_desc] => 
    ), 

[Category] => Array 
    (
     [id] => 3 
     [category_name] => Restaurant 

    ), 
) 

(上市所屬類別)。控制器的功能是這樣定義的:

function view_detail(){ 

    $this->set('um','true'); 
    $l=$this->Listing->find('first', array('conditions'=>array('id'=>$this->params['cid']))); 
    $this->set('lst', $l); 


} 

相反,我得到這樣的:

Array 
(
[Listing] => Array 
    (
     [id] => 74 
     [listing_name] => El Toro 
     [category_id] => 3 
     [location_id] => 2 
     [long_desc] => 
    ) 
) 

翻翻他建立數據庫表中,所有的蛋糕的公約已經遵循:房源已CATEGORY_ID和類別有listing_id。我相信我有一段時間被告知,如果你有簡單的餅乾模型/關聯,你甚至不需要設置模型頁面,因爲蛋糕會自動知道關聯。但無論如何我做到了這一點,但並沒有改變。我試圖將遞歸設置爲2,並沒有什麼區別。 Sooooo ....不擅長cakephp,我不知道我做得不對。順便提一下,我正在列出列表的類別名稱(餐廳)。

UPDATE

這裏是我的2種型號:

class Category extends AppModel{ 

var $hasMany = array('Listing'); 

} 


class Listing extends AppModel{ 
var $name='Listing'; 
var $belongsTo = array('Location'=>array('foreignKey'=>'location_id'), 'Category'=>array('foreignKey'=>'category_id')); 

} 
+0

categories.listing_id錯誤/不必要。你確定你有'public $ belongsTo = array('Category');'在Listing模型和'public $ hasMany = array('Listing');'在'Category'模型中? – tigrang

+0

categories.listing_id在我輸入這些數組時意外地包含了(實際上並不在數據庫表中,對不起!)。列表模型和類別模型都具有與belongsTo和hasMany正確的語法。這是蛋糕1.3,所以我只使用var $ hasMany等,而不是公共$ hasMany。 – huzzah

+0

調試(get_class($ this-> Listing))的輸出是什麼?它是AppModel還是列表?遞歸應該可以工作,但嘗試Containable行爲不會受到傷害。 – tigrang

回答

2

在1.x的模型文件應該爲小寫,並強調,這樣app/model/listing.php。 當你的模型類顯示爲AppModel時,這意味着Cake沒有找到你的模型類,而是根據AppModel製作一個通用模型類。

+0

就是這樣。我一直在使用Cake 2.x的命名約定 – huzzah