martes, 4 de marzo de 2008

Un ejemplo de modelos

En unas pocas horas creé una trivia en CodeIgniter que permite mandar preguntas y contestar las que otros usuarios envíaron.

El código es simple, pero lo interesante que quiero mostrar es el funcionamiento de los modelos. En application/libraries/MY_Model.php se extiende la definición de los modelos. Ahí tenemos los métodos "get", "fetchlist" y "count" que reciben el tipo de objeto y después un array con los filtros que se quieren aplicar.

¿Cómo se traducen los filtros?
En general, los filtros son condiciones de base de datos. Pero también se permiten "limit", "start", "orderby" y "orderbydir" que son para limitar la cantidad de registro, cambiar el inicio (offset), la columna por la que se ordena y la forma (ASC/DESC), respectivamente.
Y aún más, se pueden definir filtros propios en cada modelo. Con definir un método filter se pueden establecer condiciones propias. El método recibe tres argumentos: tipo de objeto, clave y valor. La función debe devolver TRUE en caso de que tenga un manejo propio del filtro o FALSE si no. En el ejemplo, se puede ver esto en el modelo "trivia".

¿Qué otros métodos tenemos definidos para los modelos?
Los métodos save, update, insert y delete reciben un objeto y lo guardan en la base de datos. Estos objetos deben ser objetos que extiendan a la clase Data_object, ser prefijados con "obj_" y llamarse como la tabla que le corresponde. Cada uno debe definir los atributos que se guardarán en las columnas de la base de datos.

Descargar ejemplo

5 comentarios:

Anónimo dijo...

Hola te felicito por tu blog y aprovecho para invitarte a entrar en mi web de programación y diseño gráfico
http://www.programacion-ard.com
Un Saludo y Suerte

Santiago dijo...
Este comentario ha sido eliminado por el autor.
Sanbor dijo...

Justo estoy desarrollando un sistema en el que utilizo filtrado de información. Hice mi propia implementacion pero es un poco burda comparado con extender la clase Model.
Muy buen blog, me anoto :)

Anónimo dijo...

Predilection casinos? select this advanced [url=http://www.realcazinoz.com]casino[/url] tillerman and blurry on up online casino games like slots, blackjack, roulette, baccarat and more at www.realcazinoz.com .
you can also stay our in vogue [url=http://freecasinogames2010.webs.com]casino[/url] teach at http://freecasinogames2010.webs.com and on in beginning genially touched in the prime curate !
another lone [url=http://www.ttittancasino.com]casino spiele[/url] series of events is www.ttittancasino.com , as opposed to of german gamblers, press liberation online casino bonus.

Anónimo dijo...

It isn't hard at all to start making money online in the underground world of [URL=http://www.www.blackhatmoneymaker.com]blackhat video[/URL], Don’t feel silly if you don't know what blackhat is. Blackhat marketing uses not-so-popular or misunderstood methods to build an income online.