我在CakePHP中有一个模型(Person),它代表MySQL表中的用户。模型中的一个字段是Active Directory中用户的用户标识。我还实现了一个LdapUser模型,该模型正确处理AD对象的查询,并使用useTable = false设置。
我想在Person模型中添加一个字段,指示用户当前是否在AD中被禁用。我知道如何进行所有LDAP查询业务,但问题是我无法弄清楚如何将此属性添加到模型中。我的第一个想法是添加一个静态虚拟字段,在使用LdapUser模型和ClassRegistry :: init('LdapUser')构建Person模型期间设置。但是,这不起作用,因为虚拟字段只是SQL别名,因此CakePHP不会按字面意义获取我为虚拟字段设置的值。它试图将其形成为查询。
有没有办法在模型中设置静态字段值,即使模型正在从数据库表中读取?
答案 0 :(得分:0)
好的实现将是一种行为。这样您就可以分离所有LDAP逻辑,但仍然可以通过Person模型访问它。你现在的设置似乎不是逻辑,有一个人,所以这是一个模型。更好地连接模型背面的LDAP部分。
关于残疾人的问题:您可以使用beforeFind方法加载行为。这样您就可以决定永远不会加载用户,或者可以将禁用的标志添加到数据中。
一般来说,模型中的一个方法叫做:isDisabled()应该可以解答你的问题。在这种情况下,不需要虚拟字段。