2010-04-19 116 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