虽然我正在使用CakePHP,但我认为这个问题适用于任何MVC框架。
考虑以下内容:
-
建模
getAWithConditionOne()
模型B getBWithConditionsTwo()
模型C (A &B)
getCWithConditionOne() getCWithConditionTwo() getCWithConditionOneAndTwo()
也许我看问题的角度不对。
是的,有不同的方法。根据我目前的经验和所见,你可以在这里使用行为。
在该方向上的现有行为的名称是"NamedScope"(在github中找到)和其他我现在找不到。
但基本上你可以在你的模型中设置命名条件public $scopes = array(
'public' => array('Model.active'=>1),
...
)
你可以在你的查询和find()调用中组合它们:
array('scope'=>array('Model.public', 'OtherModel.approved', ...)
等。该行为将它们连接成单个条件数组。
对我来说,这听起来像是策略模式的一个用例。你会有一个getC
方法,期望一个策略作为参数。每个策略都是一个类,具有返回特定策略条件的getConditions
方法。