CakePHP查找条件可选参数

时间:2015-02-12 13:50:47

标签: php cakephp

我希望在POST传递给我的Controller之后获取行,但参数是可选的,有时它们可​​能是空的,规则是:每当一个字段传递为空时,获取所有行(不要过滤)。 / p>

我可以在raw sql中执行此操作:

SELECT * from users where id = $param OR $param IS NULL 

但我不知道如何做这个CakePHP方式。尝试了很多组合。我现阶段的情况有点像:

[...]

'conditions' => array(
                        array(
                            'OR' => array(
                                'Request.id' => $this->request->data['Search']['id'],
                            ),

基本上,我不知道如何在查询中执行'OR $ param IS NULL'部分。 在目前的情况下,当我从视图中传递'id'参数时,我可以很好地获取行,但是如果我没有传递任何东西(空ID),结果是0行,并且应该是所有行。

我使用Postgres作为SGBD。

由于

使用解决方案进行编辑

按照@ Vin000的想法,我可以做到:

$conditions = array();

        if(isset($this->request->data['Search']['id'] ) and $this->request->data['Search']['id'] != null ) 
        { 
            $conditions['Request.id'] = $this->request->data['Search']['id']; 
        }

解决了我的问题。

1 个答案:

答案 0 :(得分:-1)

如果您从网址传递数据,则应使用$ this-> request-> params或$ this-> params->查询。如果您要从网址发送数据,则无法访问$ this-> request->帖子中的数据。请添加几个条件,如下所示。

    $conditions = array();

            if (!empty($this->params->query['keywords']))
                $conditions[] = array($this->params->query['search_by'] . ' like' => "%" . $this->params->query['keywords'] . "%");

            if (!empty($this->request->params['pass']))
                $conditions[] = //Your conditions

我个人建议您从URL传递查询参数,以便了解值是什么以及参数。