2014-01-22 38 views
0

我使用一個表users[id,user_type,...]三個控制器(users, tenants, clients
在過去的兩個模型(租客&客戶端),我用的是$useTable='users'cakePHP - 三個模型,三個控制器,一個表 - 如何過濾?

我需要的是一種基於User.user_type值自動篩選每個模型操作的方法。

含義:tenantsclients控制器將執行相同的方法,但他們的模型會爲每個執行的查詢添加一個條件。
(簡單find()查詢很簡單 - 我只是將它添加爲條件在beforeFind()電話,但怎麼能大規模進行刪除或大規模更新?)

+0

不要逃避cakephp的MVC結構,只爲所有三個控制器使用一個模型, – Anubhav

+0

@Anubhav更好 - 如何? – yossi

+0

射擊您的查詢我會回答,您想做什麼... – Anubhav

回答

1

創建一個擴展AppModel像UserWrapper類。

然後你的三個模型應該擴展UserWrapper而不是AppModel。

在UserWrapper中覆蓋適當的方法來添加所需的過濾。

您可以使用instanceof從UserWrapper類內部確定要查找的用戶類型,並將所需的user_type條件添加到查詢中。然後你調用父方法。

要正確使用它可能會很棘手,但它應該可以工作並對控制器透明。

相關問題