2012-02-02 3 views
1

У меня есть модель (Person) в CakePHP, которая представляет пользователя из таблицы MySQL. Одним из полей в модели является идентификатор пользователя в Active Directory. Я также внедрил модель LdapUser, которая корректно обрабатывает запросы для объектов AD и использует параметр useTable = false.CakePHP LDAP/MySQL Hybrid Model

Я хотел бы добавить поле в модель Person, указывающее, отключен ли пользователь в AD. Я знаю, как выполнять всю бизнес-задачу LDAP, но проблема в том, что я не могу понять, как добавить этот атрибут в модель. Моя первая идея заключалась в том, чтобы добавить статическое виртуальное поле, заданное во время построения модели Person, используя модель LdapUser и ClassRegistry :: init ('LdapUser'). Однако это не работает, потому что виртуальные поля - это просто псевдонимы SQL, поэтому CakePHP не принимает значение, которое я задал для виртуального поля буквально. Вместо этого он пытается сформировать его в запросе.

Есть ли способ установить значение статического поля в модели, даже если модель считывает из таблицы базы данных?

+0

Вы на CakePHP 1.x или 2.x? –

ответ

0

Хорошей реализацией будет поведение. Таким образом, вы разделяете всю логику LDAP, но можете получить доступ к ней через модель Person. Настройка, которую вы сделали сейчас, не выглядит логичной, есть одно Лицо, так что это одна модель. Лучше соедините часть LDAP с задней стороны модели.

Ваш вопрос об отключенном лице: вы можете, например, загрузить поведение с помощью метода beforeFind. Таким образом, вы можете решить, например, что пользователи никогда не могут быть загружены или вы можете добавить флаг отключен к данным.

В общем, просто метод в модели под названием: isDisabled() должен сделать трюк, чтобы ответить на ваши вопросы. В этом случае нет виртуального поля.