Automatización en modelos de CodeIgniter con MY_Model

En capítulos anteriores, indiqué cómo se podía automatizar las operaciones IDU (insert, delete & update) en los Modelos de CodeIgniter. En esto caso, partiremos del modelo maestro de Chris Schmitz, llamado MY_Model.php disponible en GitHub. Veamos qué es y sus beneficios y cómo implementarlo.

¿Qué es MY_Model.php?

Es una clase PHP que extiende de CI_Model y contiene varias funciones dinámicas para insertar, actualizar y borrar, pero también funciones de filtrado y conteo, por ejemplo. Si tus modelos de CodeIgniter heredan de esta clase maestra, adquieren estos métodos mágicos y sólo necesita cumplir con unas sencillas reglas.

Implementación

  • Ubicar el fichero MY_Model.php en application/core
  • Cada modelo tuyo debe: -  Extender de MY_Model, en lugar de CI_Model que es el predeterminado.
  • Definir al menos las variables $primary_table (nombre de la tabla) y $fields (array con los nombres de los campos)

Ejemplo

Modelo Empresa

class Empresa_model extends MY_Model { 
  var $primary_table = 'empresas'; 
  var $validate_field_existence = TRUE; 
  var $fields = array( 'id_empresa', 'nombre', 'direccion', 'activa', 'fecha_creacion' ); 
  var $required_fields = array( 'nombre', 'activa', 'fecha_creacion' ); 
}

Controlador, usando el Modelo Empresa

Por ejemplo, insertar:

// Relleno de datos de la nueva empresa 
$datos = array( 
  'nombre' => $this->input->post('emp_nombre'), 
  'activa' => $this->input->post('emp_activa'), 
  'fecha_creacion' => $this->input->post('emp_fech_creacion') ); 
// Insertar empresa 
$empresa = $this->empresa_model->add($datos);

Recuerda que hereda todos sus métodos, que puedes encontrar, modificar y añadir en el fichero MY_Model, como por ejemplo:

  • add – Inserta
  • get – Obtiene
  • update – Actualiza
  • delete – Borra

English? Check the readme at GitHub