2012-02-02 71 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()的模型中的方法來解決您的問題。在這種情況下不需要虛擬領域。