Я пытаюсь установить поле «на лету» внутри модели, поэтому оно будет возвращено в моем случае с любым действием чтения. Я просмотрел виртуальные поля, но они не совсем правы, поскольку они в основном выполняют SQL-запросы.Программная установка поля внутри модели в CakePHP
В этом примере я пытаюсь вернуть значение, основанное на простой проверке, чтобы узнать, активировал ли пользователь свою учетную запись или нет. Внутри моей модели, я хочу, чтобы запустить эту функцию:
public function status() {
if ($this->field('password')) {
return = 'active';
} else if ($this->Ticket->field('id')) {
return = 'pending';
} else {
return = 'inactive';
}
}
Цель состоит в том, чтобы получить доступ, что на мой взгляд, с помощью $ пользователя [ «User»] [ «статус»], так что я мог бы применить стили CSS, и т.д., основанный на результате.
Но это между установкой $ this ['User'] ['status'] = status() ускользает от меня прямо сейчас.
Кроме того, поскольку я читаю список пользователей по-разному (иногда с разбивкой на страницы или одним пользователем за раз), это не то, что я хочу установить в своем контроллере. Я хочу, чтобы свойство просто отображалось в модели при чтении.
Хм ... по какой-то причине это дает мне ошибку: Фатальная ошибка: Разрешены памяти размером 33554432 байт исчерпаны (пытался выделить 523800 байт) –
Похоже, что у вас слишком рекурсивный набор. Я рекомендую установить 'public $ recursive = -1;' в вашем AppModel, а затем изменить его только тогда, когда вам НЕОБХОДИМО это выше (хотя я не думаю, что использование рекурсивного - хорошая идея - вместо этого следует использовать Containable) – Dave