我对 CakePHP 和面向对象编程比较陌生。我以前在 CakePHP 中构建过应用程序,但从来没有达到这个程度,因此我寻求帮助的原因。
我有一个大型产品管理数据库,用户需要能够设置过滤条件以找到最接近的产品匹配项。
products 表包含与各个表相关的 category_id、manufacturer_id、type_id、status_id。
我有一个带有每个过滤器下拉框的侧边栏,并希望所有过滤器一起工作,例如,如果选择了制造商和产品类型,则显示这些过滤结果,并将状态和类别下拉列表更改为仅包含来自已经过滤的结果。
在过去,我通过使用基于用户输入的动态查询设置条件来实现这一点,每次应用过滤器时都附加 where 子句。
到目前为止,我只能使用单独过滤的结果
$this->Product->recursive = 0;
$mid = (isset($this->params['named']['mid'])) ? $this->params['named']['mid'] : '';
if(!empty($mid)){
$this->paginate = array(
'conditions' => array('Product.manufacturer_id' => $mid),
'limit' => 10
);
}
$products = $this->paginate('Product');
$this->set(compact('products'));
其中“mid”是制造商 ID,这是在 url 中手动输入“mid”
如果用户设置 category_id、manufacturer_id、type_id、status_id 或任何组合,我如何获得累积过滤结果?我将使用哪些查询来重新填充下拉列表?
(最终我将使用 ajax,但现在假设我有 4 个带有提交按钮的下拉框)