Как получить связанные модели для запуска __construct? - PullRequest
3 голосов
/ 30 августа 2010

Маленькая история; Я ненавижу тот факт, что я не могу использовать перечисления в CakePHP, но я понимаю. Тем не менее, у меня есть еще одна любимая вещь: мои логические значения возвращают 0 или 1, и нет универсального способа обратить их в «да» и «нет».

Итак, я хотел бы создать небольшую функцию в методе afterFind AppModel, чтобы сделать это для меня. Первым шагом, который я хотел сделать, было определить, какие столбцы являются логическими (поскольку некоторые столбцы будут возвращать нули, а те, которые не нужно преобразовывать). Я придумал этот маленький код:

function __construct($id = false, $table = null, $ds = null) {
    parent::__construct($id, $table, $ds);
    foreach($this->_schema as $col => $colDetails){
        if($colDetails['type'] == 'boolean')
            $this->_booleans[] = $col;
    }
}

Однако быстрая отладка ($ this) в модели показывает, что захватываются только логические столбцы текущей модели. Когда я нажимаю эти столбцы напрямую, появляются логические значения $ this -> _, но опять же, а не связанные с ними.

Я посмотрел руководство и API ... Я не вижу упоминания о том, как подойти к решению.

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 30 августа 2010

Перечисления не поддерживаются CakePHP, чтобы сделать тип базы данных приложения независимым. Перечисления не поддерживаются многими механизмами баз данных. Самое простое решение для вашей задачи:

echo $model['boolField'] ? 'Yes' : 'No';
0 голосов
/ 30 августа 2010

Проблема в том, что $this->_booleans в AppModel содержит только детали схемы текущей модели.На самом деле, код, вероятно, работает.Вы должны проверить $this->_booleans и $this->Related->_booleans, и я уверен, что вы найдете то, что ищете.

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