带下划线表的Cakephp忽略模型

时间:2010-04-19 06:10:44

标签: php cakephp

我有一个表格指标和另一个表格metric_levels。在Metric模型中,我有$ hasMany ='MetricLevels',但MetricLevels模型中的任何内容都被完全忽略。

但是,如果我将模型重命名为'Metric'并且使用$ useTable ='metric_levels'它可以正常工作。我尝试了所有组合,但似乎都没有。我尝试过复数,单数,下划线,似乎没什么用。简单地忽略该模型,它只取得数据库中的值。

感谢任何帮助。

2 个答案:

答案 0 :(得分:7)

你的具体问题并不十分清楚,所以只需几点:

  • 模型名称总是单数
    • Metric hasMany MetricLevel
  • 表名是复数,并被翻译成单数模型,下划线转换为CamelCase
    • MetricLevel => metric_levels
  • 即使您没有创建模型,Cake也会让您使用它并为您快速制作一个模型,通过上面的命名约定推断表名称
  • 如果Cake“忽略”你的模型,这意味着它正在构建另一个模型,因为你没有为你真正想要的模型使用正确的名称
  • 查看debug = 2中生成的SQL查询帮助

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

答案 1 :(得分: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'仍然被忽略,我不知道为什么。但至少它现在正在使用正确的模型。