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