CakePHP:如果某些搜索字段留空,则返回搜索中所有可能的结果


CakePHP: Return every possible result from search if certain search field is left blank

我在CakePHP项目中有一个简单的搜索引擎。其中一个可搜索字段设置如下(从我的角度来看):

echo $this->Form->input('field2', array('label' => 'FieldName', 'multiple' => true, 'div'=>false, 'class' => 'chosen', 'options' => $fromController));

用户可以从此下拉列表中选择多个条目,并返回这些选择。这工作正常;但是,如果字段 2 留空,我希望搜索根据字段 1 中的值返回所有记录。有没有办法做到这一点?下面是返回搜索结果的控制器代码:

//Populate the dropdown    
$fromController = $this->Model->find('list', array('fields' => array('field', 'field')));
$requirements = array();
$findOptions['conditions'] = array();
$findOptions['conditions'] = array_merge($findOptions['conditions'], array('Model.field1' => $this->request->data['Model']['field1'],
        'Mode.field2' => $this->request->data['Model']['field2']));
$specificresults = $this->Model->searchOptions($findOptions);
$requirements = array_merge($specificresults); 

以及模型中的函数:

function searchOptions($findOptions = array()) {
$records = array();
$findOptions['order'] = array('Model.field1'=>'DESC');
// return the final result....
return $this->find('all', $findOptions);
}

现在,如果字段 1 有一个值,但字段 2 留空,则不返回任何内容。只需要弄清楚如何告诉控制器我想要一切。

如果field2为空,则取消设置条件:-

if (empty($this->request->data['Model']['field2'])) {
    unset($findOptions['conditions']['Mode.field2'])
}