Как я могу получить связанные модели для запуска конструкта?


Немного истории; я ненавижу тот факт, что не могу использовать перечисления в CakePHP, но я это понимаю. Тем не менее, еще один питомец peev у меня есть, что мои булевы возвращают 0 или 1, и нет никакого способа универсально превратить их в yes' и no'.

Поэтому я решил создать небольшую функцию в методе 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 - >_booleans, но опять же, не те из связанных моделей.

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

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

2 3

2 ответа:

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

echo $model['boolField'] ? 'Yes' : 'No';

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