Опция поиска Cakephp с несколькими полями - PullRequest
0 голосов
/ 03 января 2011

В моем проекте реализована опция поиска. Где мы, пользователь, должны иметь возможность поиска по четырем полям, а именно: «Zip, Street, City and State» Но ни одно из этих полей не является обязательным.

Меня смущают условия, которые я должен поставить в find (). Поэтому, пожалуйста, помогите мне.

Ответы [ 3 ]

2 голосов
/ 04 января 2011

Я предполагаю, что у вас возникли проблемы, потому что поля формы являются необязательными, и вы не знаете, как построить conditions для вашей находки.Вот простой способ:

$conditions = array();
if (!empty($this->data['User']['zip'])) {
    $conditions[] = array('User.zip' => $this->data['User']['zip']);
}
if (!empty($this->data['User']['street'])) {
    $conditions[] = array("User.street LIKE '%{$this->data['User']['street']}%'");
}
... etc

Наконец, вы можете добавить условия либо строго :

$this->User->find('all', array('conditions' => $conditions));

, либо свободно :

$this->User->find('all', array('conditions' => array('or' => $conditions)));

Вторая форма помещает операнд ИЛИ между вашими условиями WHERE, чтобы он возвращал любое конкретное совпадение.Начните отсюда и медленно увеличивайте сложность поиска.

1 голос
/ 03 января 2011

Вам нужно будет более конкретно определить, в чем проблема. Если это просто условия, то попробуйте что-то вроде этого:

<?php
$results = $this->Model->find('all', array(
  'conditions' => array(
    'Model.field' => '%'.$this->data['Model']['some_search_field'].'%',
    'Model.field2' => '%'.$this->data['Model']['some_search_field2'].'%')
  ));
?>
0 голосов
/ 04 января 2011

Это правильный способ обработки поиска в CakePHP или любом веб-приложении по этому вопросу: http://bakery.cakephp.org/articles/calin/2008/09/18/search-feature-to-cakephp-blog-example.

Он включает в себя создание поискового индекса, что по сути означает, что он сворачивает все поля каждой записи в таблице в одну строку, что значительно упрощает поиск. Следуйте инструкциям выше, чтобы оптимизировать поиск на вашем сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...