我正在尝试在我的CakePHP应用程序中构建一个基本的搜索功能。只有两个字段需要搜索。我的控制器中有代码可以从表单中获取两个搜索值:
$options = array('Model.id' => $this->request->data['Model']['id'],
'Model.field2' => $this->request->data['Model']['field2']);
$this->set('views', $this->Paginator->paginate('Model', $options));
这两个输入都来自下拉列表,并且都是必需的。现在,当我运行搜索时,它只返回一个结果,即 field2 下拉列表中的第一个可选选项,如下所示:
ID Field2
1 Value1
OR
ID Field2
2 Value1
如果我在 field2 中搜索任何其他值,则不会得到任何结果。如果我注释掉 field2 的下拉列表并只搜索 ID,我会得到具有该 ID 的所有行(大约 500,这是预期的)。当我在第二个下拉列表中搜索 ID 和 Value1 以外的任何值时,为什么我的结果集为空?
作为
更新:
参数传递给paginate
的$options
数组可以包含多个键,类似于Model->find()
使用的键
首先构建$conditions
阵列
$conditions = array('Model.id' => $this->request->data['Model']['id'],
'Model.field2' => $this->request->data['Model']['field2']);
然后是$options
$options['conditions'] = $conditions
然后将其传递给paginate
$this->set('views', $this->Paginator->paginate('Model', $options));
更新:
$conditions = array('Model.id' => $this->request->data['Model']['id'],
'Model.field2' => $this->request->data['Model']['field2']);
$options['conditions'] = $conditions;
$this->Paginator->settings = $options;
$data = $this->Paginator->paginate('Model');
$this->set('views', $data);