Búsqueda anticipada en el modelo (MVC)
-
27-10-2019 - |
Pregunta
Quiero crear una búsqueda anticipada, algo como esto:
- Textbox: Buscar
- Desplegable: buscar por: nombre, ubicación o teléfono
- Desplegable: orden por ASC o DEC
- Desplegable: ordenar por nombre, ubicación o teléfono
- Desplegable: búsqueda entre fechas (si se selecciona)
¿Cuál es la forma correcta de agregar esos parámetros en la función para el modelo?
Se me ocurrió esta solución:
class ShopsModel extends Model {
findBy($find, $searchBy, $order, $sort, $betweenDate) {
// some MySQL query here...
}
}
Editar: Estoy hablando de las variables - findBy($find, $searchBy, $order, $sort, $betweenDate)
- ¿Necesito todos esos parámetros o hay una solución alternativa?
Solución
Tu solución parece estar bien. Pero también puede usar el patrón del decorador, para que pueda hacer la siguiente consulta:
$shops = new ShopsModel();
$results = $shops->search('name', 'Tadeck')
->order_by('name', 'asc')
->between_dates('2012-02-01', '2012-03-14')
->fetch_all();
Otros consejos
Creo que lo que está describiendo debe hacerse junto con una biblioteca de JavaScript como Knockoutjs o Backbonejs.
Nettuts ha cubierto KnockoutJS y una demostración está disponible aquí: http://nettuts.s3.amazonaws.com/1034_ko/demo/index.html
Si está utilizando un patrón como YII, puede buscar en Google tutoriales como este http://aiao.be/2012/01/29/knockout-js-with-the-yii-framework-hello-world-example/