条件和过滤器CakePHP

时间:2016-03-03 16:52:20

标签: cakephp

我在表格中分页结果。现在添加过滤数据的方式,其中一种过滤方式是创建日期,用户可以输入日期“from”和日期“to”。我认为我这样做的方式失败了,当我得到一个使用数据类型的用户过滤的post verficiando。 Armo与条件和字段的安排,过滤并最终将它们返回到页面。我留下了我的代码

if ($this->request->is('post')) {
            if(isset($this->request->data['LogsAccione']['user_id'])){
                $options['conditions']['LogsAccione.user_id'] = $this->request->data['LogsAccione']['user_id'];
            }
            if (isset($this->request->data['LogsAccione']['created_from']) && !empty($this->request->data['LogsAccione']['created_from']) && isset($this->request->data['LogsAccione']['created_to']) && !empty($this->request->data['LogsAccione']['created_to'])) {
                $options['conditions']['LogsAccione.created'] = array(
                    '>=' => date('Y-m-d 00:00:00', strtotime($this->request->data['LogsAccione']['created_from'])),
                    '<=' => date('Y-m-d 23:59:59', strtotime($this->request->data['LogsAccione']['created_to']))
                );
            }
}
显然这个失败了,但找不到怎么做我想要的方式。创建具有多个选项的排列,以便过滤后显示给用户。在用户的特定情况下,它的工作原理是因为只有一个选项且相同,但在创建日期的情况下是两种可能性。

1 个答案:

答案 0 :(得分:1)

解决方案:

if ($this->request->is('post')) {
        if(isset($this->request->data['LogsAccione']['user_id']) && !empty($this->request->data['LogsAccione']['user_id'])){
            $options['conditions'][] = "LogsAccione.user_id ='".$this->request->data['LogsAccione']['user_id']."'";
        }
        if (isset($this->request->data['LogsAccione']['created_from']) && !empty($this->request->data['LogsAccione']['created_from']) && isset($this->request->data['LogsAccione']['created_to']) && !empty($this->request->data['LogsAccione']['created_to'])) {
            $options['conditions'][] = "LogsAccione.created >='".date('Y-m-d 00:00:00', strtotime($this->request->data['LogsAccione']['created_from']))."'";
            $options['conditions'][] = "LogsAccione.created <='".date('Y-m-d 23:59:59', strtotime($this->request->data['LogsAccione']['created_to']))."'";
        }elseif(isset($this->request->data['LogsAccione']['created_from']) && !empty($this->request->data['LogsAccione']['created_from'])){
            $options['conditions'][] = "LogsAccione.created >='".date('Y-m-d 00:00:00', strtotime($this->request->data['LogsAccione']['created_from']))."'";
        }elseif(isset($this->request->data['LogsAccione']['created_to']) && !empty($this->request->data['LogsAccione']['created_to'])){
            $options['conditions'][] = "LogsAccione.created <='".date('Y-m-d 23:59:59', strtotime($this->request->data['LogsAccione']['created_to']))."'";
        }
    }