2016-03-03 3 views
0

Я разбил страницы на таблицу в таблице. Теперь добавьте способ фильтрации данных, один из способов фильтрации - по дате создания, пользователь может ввести дату «from», а также дату «to». Я думаю, что способ, которым я это делаю, не удается, когда я получаю сообщение verficiando, использующее типы данных, которые пользователь фильтрует. Armo - это соглашение с условиями и полем, которые фильтруют и в конечном итоге возвращают их на страницу. Я оставляю свой кодУсловия и фильтры CakePHP

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

Решение:

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']))."'"; 
     } 
    } 
+1

Вместо того, чтобы идти для этого уродливого и повторяющегося решения проверить этот плагин. https://github.com/FriendsOfCake/search Предназначен для обработки параметров фильтра и условий. – burzum

Смежные вопросы