¿Cómo puedo usar una búsqueda comodín para obtener una lista de andamios en un CakePHP?

Tengo un andamio construido para CakePHP, pero necesito una manera para que los usuarios escriban parte de un apellido en un cuadro de texto, hagan clic en un botón y para que la lista de personas se filtre a una búsqueda con comodín.

Estoy luchando por el código de ejemplo. ¿Alguien tiene algo?

views / users / index.ctp

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

controladores / 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')); } 

Necesita ver los métodos Findby que proporciona CakePHP.

Además de su findAll () estándar, tiene varios métodos Findby “mágicos” que le permiten especificar una columna en la tabla para buscar por:

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

También tiene findBySql (instrucción) que le permite usar una statement SQL personalizada. Puede usar esto para ejecutar una instrucción LIKE de la siguiente manera:

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

Eso le devolverá una lista de usuarios coincidentes que luego puede mostrar al usuario. No es la consulta más eficiente, pero funciona.