我正在使用CakePHP v2.3.x,在编辑页面上我需要使用搜索结果动态更新页面...
我正在从我的Views/Tests/admin_edit.php
个观看页面之一拨打AJAX电话到QuestionsController.php
中的特定操作。
以下是处理请求的操作(到目前为止):
public function admin_search() {
if ($this->request->is('post')) {
$searchdata = $this->request->data;
$r = $this->Question->find('all', array('conditions' => array('Question.id' => $searchdata['id'])));
echo json_encode($r);
exit;
}
}
它目前只返回ID与用户输入的ID匹配的问题,但完成的版本将搜索几个不同的字段。我知道如何通过向条件数组添加额外的键/值对来实现此目的。但是,我不知道如何将这些字段设为可选。如果用户输入问题名称但不输入ID,反之亦然?是否有配置,以便CakePHP将忽略任何空的字段条件?
同样,有没有办法设置运算符,例如,我可以匹配子串或整数范围? 更新:我在文档中找到了this。
答案 0 :(得分:2)
我会先自己删除所有空条目。
因此,假设您有一个$searchdata
数组,其中包含三个可选字段,其中一个字段为空。首先构建条件数组:
$searchdata = array("id" => 1, "name" => "", "type" => "foo");
$conditions = array('Question.id' => $searchdata['id'], 'Question.name' => $searchdata['name'], "Question.type" => $searchdata['type']);
(或者,如果你想得到幻想)
foreach($searchdata AS $key => $value) $conditions['Question.' . $key] = $value;
现在清理$conditions
,删除空值:
$conditions = array_filter($conditions);
多田:
$r = $this->Question->find('all', array('conditions' => $conditions));