2012-02-02 47 views
1

我在CakePHP中有一个模型(Person),它代表一个MySQL表中的用户。模型中的一个字段是Active Directory中用户的用户标识。我还实现了一个LdapUser模型,它可以正确处理AD对象的查询,并使用useTable = false设置。CakePHP LDAP/MySQL混合模型

我想在Person模型中添加一个字段,指出用户当前是否在AD中被禁用。我知道如何做所有LDAP查询业务,但问题是我无法弄清楚如何将此属性添加到模型中。我的第一个想法是添加一个静态虚拟字段,使用LdapUser模型和ClassRegistry :: init('LdapUser')构建Person模型。但是,这不起作用,因为虚拟字段只是SQL别名,所以CakePHP不会从字面上为虚拟字段设置值。而是试图将其组成查询。

有没有办法在模型中设置静态字段值,即使模型正在从数据库表读取?

+0

你在使用CakePHP 1.x还是2.x? – 2012-02-02 03:37:29

回答

0

好的实现将是一种行为。这样你就可以分离所有的LDAP逻辑,但仍然可以通过Person模型访问它。你现在所做的设置看起来不是逻辑的,有一个人就是一个模型。更好地连接模型后部的LDAP部分。

你关于残疾人的问题人:你可以例如用一个beforeFind方法加载一个行为。通过这种方式,您可以决定例如永远不会加载用户,也可以将禁用标志添加到数据中。

通常只需要一个名为isDisabled()的模型中的方法来解决您的问题。在这种情况下不需要虚拟领域。