EX_Model is a project mainly written in PHP, it's free.
Extensión de CI_Model
Code Igniter es de esos frameworks con los que he trabajado ya por mucho tiempo, después de usar cosas como Django o Ruby lo siento un poco atrasado. La razón por la cual lo sigo usando es por su simpleza, rapida instalación y arte al momento de codificar. Para hacerme la vida mas facil desarrolle una extensión de la clase CI_Model que permite evitar re-escribir y re-escribir peticiones a la base de datos que se regresan como objetos y que después hay que parsear y después actualizar. Desde mi punto de vista mucho trabajo.
Esta es una clase genérica que permite hacer peticiones del tipo
Esto es un Get del ID 10
$persona = new Persona_model( 10 ); Normalmente harías un
$query = $this->db->get_where('persona', array('id' => $id), 0, 0); $persona=$query->result(); La diferencia comienza al querer tratar con el objeto. Para Obtener el nombre usaremos
$persona->get( 'nombre' ); En lugar de
$this->db->select('nombre'); $query = $this->db->get('persona'); $persona=$query->result(); Para actualizar usaremos
$persona->set( 'nombre', 'Arturo Jamaica' ); $persona->update(); En lugar de un
$persona = new Persona; $this->db->where('id', $id); $this->db->update('persona', $persona); Si lo notas trabajamos con objetos, no con peticiones recurrentes a la BD. Lo cual nos hace la vida más fácil
Es importante que tambien reescribas tus Modelos con el siguiente modelo de constructor:
/ Persona_model.php / class Persona_model extends EX_Model{
/*
* Nuevo constructor para aprovechar las ventajas de la nueva clase
*/
public function __construct( $id = NULL )
{
$fields = array();
$fields['nombre'] = NULL;
$fields['apellido'] = NULL;
parent::set_params( $fields );
parent::__construct();
if( $id )
{
$this->db->where( 'id', $id );
$query = $this->db->get( $this->db_table );
if( $query->num_rows() != 0 )
{
$row = $query->row();
$this->populate( $row );
}
}
}
}
Leer más en http://walhez.com/?p=12666#ixzz1L4ay6Cce
EJEMPLO :