cakePHP - 三种型号,三种控制器,一种表 - 如何过滤?

时间:2014-01-22 09:56:51

标签: model cakephp-1.3 conditional-statements

我正在使用一个表users[id,user_type,...]用于三个控制器(users, tenants, clients
在最后两个模型(租户和客户端)中,我使用$useTable='users'

我需要的是一种基于User.user_type值自动过滤每个模型操作的方法。

含义:tenantsclients控制器将执行相同的方法,但它们的模型将为它们执行的每个查询添加一个条件。
(使用简单的find()查询很简单 - 我只会将其添加为beforeFind()调用中的条件,但如何才能进行批量删除或批量更新?)

1 个答案:

答案 0 :(得分:1)

创建一个扩展AppModel的类,如UserWrapper。

然后你的三个模型应该扩展UserWrapper而不是AppModel。

在UserWrapper中覆盖适当的方法以添加所需的过滤。

您可以使用instanceof来确定您在UserWrapper类中查看的用户类型,并将所需的user_type条件添加到查询中。然后你调用父方法。

要做到正确可能会很棘手,但它应该起作用并对控制器透明。