我希望在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'];
}
解决了我的问题。
答案 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传递查询参数,以便了解值是什么以及参数。