Cakephp с таблицей подчеркивания игнорирует модель - PullRequest
2 голосов
/ 19 апреля 2010

У меня есть одна таблица показателей и другая таблица metric_levels. В модели Metric у меня есть $ hasMany = 'MetricLevels', но все, что находится внутри модели MetricLevels, полностью игнорируется.

Но если я переименую модель в 'Metric' и получу $ useTable = 'metric_levels', она будет работать нормально. Я перепробовал все комбинации, но ни одна из них не сработала. Я пробовал множественное число, единственное число, подчеркивание, кажется, ничего не работает. Модель просто игнорируется, и она просто берет значение из базы данных.

Любая помощь приветствуется.

Ответы [ 2 ]

7 голосов
/ 19 апреля 2010

Не совсем понятно, в чем заключается ваша конкретная проблема, поэтому всего несколько указателей:

  • Названия моделей всегда единичны
    • Метрика имеетМного Метрического уровня
  • Имена таблиц множественного числа и переводятся в единичные модели, подчеркивания преобразуются в CamelCase
    • MetricLevel => metric_levels
  • Даже если вы не создали модель, Cake позволит вам использовать ее и создать для вас на лету, выводя имена таблиц в соответствии с приведенными выше соглашениями об именах
  • Если Cake «игнорирует» вашу модель, это означает, что он создает другую модель на лету, потому что вы не используете правильное название для модели, которую вы на самом деле хотите
  • Просмотр сгенерированных SQL-запросов в debug = 2 помогает

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

0 голосов
/ 20 апреля 2010

Работает сейчас. Вот как это выглядит:

// 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' все еще игнорируется, я не знаю почему. Но, по крайней мере, сейчас он использует правильную модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...