2012-08-10 66 views
1

我只是在研究CakePHP,所以很抱歉有任何明顯的錯誤。 我已經創建了模型類並更改了默認表名。使用CakePHP模型類

class Weathers extends AppModel {  
    public $tablePrefix = 'weather_'; 
    public $useTable = 'forecasts'; 

    function saveCountries($countries){ 
     ... 
    } 
} 

我的控制器功能

if (!$this->loadModel('Weather')) 
    exit; 
$Weather = $this->Weather; 
$Weather->saveCountries($countries); 

我對$天氣 - > saveCountries得到錯誤($國家);

Error: Table weathers for model Weather was not found in datasource default.

請幫我找出我做錯了什麼。

+0

模型類名稱應該是單數。做'調試(get_class($ Weather));'它很可能是'AppModel',而不是'Weathers',因爲你現在擁有它。 – tigrang 2012-08-10 01:36:35

+0

謝謝,我試過了,但它沒有幫助。調試結果爲'AppModel' – Vahan 2012-08-10 01:38:31

+1

將類名更改爲Weather,將文件名更改爲Weather.php。如果蛋糕無法找到你的模型,它會創建一個基於AppModel – tigrang 2012-08-10 01:44:10

回答

1

您定義的模型類是Weathers而不是Weather。所以只需更改類名稱Weather而不是Weathers並完成此操作。

1

請注意您的Model類的聲明。

你稱之爲Weathers

這沒有問題。然而,當你試圖加載模型Weather(在這種情況下並不缺少複數)時,CakePHP會爲你動態地構建一個模型,而不是使用你的Weathers(複數)類。

CakePHP標準是爲模型使用單數名稱。我建議您將您的模型類重命名爲Weather以避免此問題。一旦你做了這個改變,你加載模型的代碼將按預期工作。