Как я могу использовать подстановочный поиск для получения списка из леса в CakePHP?

У меня есть эшафот, построенный для CakePHP, но для того, чтобы пользователи могли набирать часть фамилии в текстовое поле, нажмите кнопку и список людей, которые будут отфильтрованы для поиска по шаблону.

Я боюсь, например, кода. Кто-нибудь есть?

Solutions Collecting From Web of "Как я могу использовать подстановочный поиск для получения списка из леса в CakePHP?"

просмотров / пользователей / index.ctp

<fieldset> <legend>Filter users</legend> <?php echo $form->create('User', array('action' => 'index')); echo $form->input('surname', array('div' => false)); echo $form->submit('Filter', array('div' => false)); echo $form->end(); ?> </fieldset> 

Контроллеры / users_controller.php

 public function index($surname = null) { // post-redirect-get if ($this->data['User']['surname']) { $this->redirect(array('id' => $this->data['User']['surname'])); } // conditions $conditions = null; if ($surname) { $conditions = array('surname LIKE' => '%' . $surname . '%'); } // find $users = $this->Users->find('all', array('conditions' => $conditions)); // set $this->set(compact('users')); } 

Вам нужно посмотреть методы поиска, которые предоставляет CakePHP.

в дополнение к вашему стандарту findAll () у вас есть несколько «магических» методов поиска, которые позволяют вам указать столбец в таблице для поиска по:

 $this->User->findBySurname($surname); 

У вас также есть findBySql (statement), который позволяет вам использовать пользовательский оператор SQL. Вы можете использовать это для выполнения инструкции LIKE следующим образом:

 $users = $this->User->findBySql("SELECT * FROM USERS u WHERE u.SURNAME LIKE '%" . $surname . "%' ORDERBY SURNAME"); 

Это вернет вам список подходящих пользователей, которые вы сможете отобразить пользователю. Это не самый эффективный запрос, но он работает.