所以我正在使用(非常棒的)Cake DC Search 插件。除其他外,我想要一个“最小”和“最大”输入,并搜索“数量”在“最小”和“最大”范围内的记录,如果两者都设置了,或者大于/小于最小/max 如果只设置了一个。
我已经让它工作了——唯一的问题是条件在 SQL 查询中被包含两次。很明显为什么......这是我的模型代码:
public $filterArgs = array(
'range_min' => array('type' => 'query', 'method' => 'findByAmountRange'),
'range_max' => array('type' => 'query', 'method' => 'findByAmountRange'),
// Other rules go here
);
public function findByAmountRange($data = array()) {
// Returns a condition something like 'Model.amount BETWEEN 1 and 100'
}
因此,因为 $filterArgs 的 'range_min' 和 'range_max' 键都使用相同的方法(findByAmountRange),所以条件被包含两次。
所以,有三种解决方案:
别担心,让条件出现两次
在模型中创建一个实例变量,比如findByAmountRangeHasBeenCalled,并在方法第一次调用时设置为true,这样以后我们就知道不要再调用了
找到更优雅的解决方案。搜索插件有什么办法解决这个问题吗?您可以将其设置为使两个字段共享一个共同的 filterArgs 方法,以便它只被调用一次吗?
提前致谢。
PS - 我知道搜索插件的测试用例包括一个“生成范围条件”示例,但这不是我想要的 - 我想要两个字段,用户可以输入它们。