2010-04-19 38 views
2

我有一個表指標和另一個表metric_levels。在Metric模型中,我有$ hasMany ='MetricLevels',但MetricLevels模型中的任何內容都被完全忽略。但是,如果我將模型重命名爲'Metric'並且具有$ useTable ='metric_levels',那麼它工作正常。我試過所有的組合,但似乎沒有任何工作。我嘗試過複數,單數,下劃線,似乎沒有任何工作。該模型簡單地被忽略,它只是從數據庫中獲取值。帶下劃線表的CakePHP忽略模型

任何幫助表示讚賞。

回答

0

它正在工作。這是它是如何:

// metric.php 
var $hasMany = 'MetricLevel' 

// metric_level.php 
<?php 
    class MetricLevel extends AppModel { 
     var $name = 'MetricLevel'; 
    var $useTable = 'metric_levels'; 
    var $order = 'upper_value DESC'; 
    var $belongsTo = 'colour'; 
    } 
?> 

$ order ='upper_value DESC'仍然被忽略,我不知道爲什麼。但至少現在正在使用正確的模型。

7

它不是非常清楚你的具體問題是什麼,所以只是幾個要點:

  • 型號名稱總是奇異
    • 公制的hasMany MetricLevel
  • 表名是複數,被翻譯成單數模式,下劃線轉換爲駝峯式
    • MetricLevel => metric_levels
  • 即使你沒有創建一個模型,蛋糕會讓你使用它,並一上來就飛了你,通過上述命名約定推斷表名
  • 如果蛋糕「忽略」模型,這意味着它的組成上飛另一個模型,因爲你沒有使用正確的名稱爲模型,你真正想要
  • 綜觀debug = 2生成的SQL查詢幫助

http://book.cakephp.org/view/24/Model-and-Database-Conventions

+0

Hi deceze, 感謝您的回覆。 我敢肯定,問題在於Cake在飛行中彌補了模型並忽略了我所做的。我試圖在/ app/models文件夾中創建一個,但無論如何它都會被忽略。 我已經嘗試調用實際的模型文件名MetricLevel.php,MetricLevels.php,metric_level.php和metric_levels.php,他們都沒有工作。我已經嘗試了與命名實際模型相同的內容。 如果我使用單個名稱創建模型並使用$ useTable ='metric_levels',它將起作用,然後將Metric模型的$ hasMany指向其工作的單名模型。 – going 2010-04-19 22:14:46