> Manuales > Manual de CodeIgniter

Cómo utilizar los modelos desde un controlador de CodeIgniter, cargar el modelo, solicitar datos al modelo por medio de sus métodos y mostrarlos por pantalla con una vista.

En el artículo anterior del Manual de CodeIgniter comenzamos a explicar los modelos y cómo gestionar las conexiones a base de datos con ellos. Vimos cómo se construyen los modelos, por lo que ahora pasaremos mostrar cómo utilizarlos desde los controladores.

Cargar un modelo

La carga de un modelo se realiza desde el controlador que lo va a utilizar, por medio del método de carga de modelos, con un código como este:

$this->load->model('Nombre_model');

Esto supone que el modelo está en el directorio general de los modelos (system/application/models).

Ahora, si pretendiésemos cargar un modelo que está en un subdirectorio, tendríamos que indicar la ruta en la función de carga del modelo.

$this->load->model('carpeta_del_modelo/Nombre_model');

Si queremos cargar varios modelos de una sola vez, podemos hacerlo pasando un array con todos los modelos que deseamos cargar:

$this->load->model(array('Cliente_model','Factura_model'));

Una vez cargado un modelo, sus métodos para el acceso a los datos estarán disponibles en nuestro controlador, a través del propio objeto controlador, el nombre del modelo que queremos accionar y la función que queremos invocar dentro del modelo.

$this->Nombre_model->funcion_del_modelo();

Carga automática de modelos

Si deseamos cargar automáticamente uno o varios modelos cada vez que se inicia cualquier solicitud de página en nuestra aplicación web, es decir, sin que tengamos que cargarlos explícitamente desde los controladores, podemos especificar en el archivo de configuración "autoload.php" cuáles son los modelos que vamos a requerir siempre.

Este archivo de configuración se encuentra en la ruta "system/application/config/autoload.php". Tenemos que modificar la lista de modelos a cargar en la variable de configuración "model", con un código como este:

$autoload['model'] = array('Usuario_model', 'Empresa_model');

Esto cargaría el modelo de usuarios y el modelo de empresas en todas las páginas de nuestra aplicación web con CodeIgniter.

Ejemplo de controlador que utiliza modelos

Para que se pueda ver mejor cómo utilizar un modelo desde un controlador, veamos un ejemplo. A continuación tenemos un esquema de un controlador que utiliza los modelos para extraer datos de la base de datos y enviarlos a una vista para mostrarlos en la página.

class Factura extends Controller {
   function mostrar_factura($id_factura){
      $this->load->model('Factura_model');
      $factura = $this->Factura_model->dame_factura_id($id_factura);
      $this->load->view('mostrar_factura', $factura);
   }
}

Este controlador llamado Factura tiene una función para mostrar una factura, que recibe el identificador de la factura que se desea ver.

En dicha función se carga el modelo adecuado para el trabajo con facturas "Factura_model". Luego llamamos a la función dame_factura_id() del modelo cargado, a la que le pasamos el identificador de la factura que deseábamos ver. La función dame_factura_id() del modelo devuelve un array con los datos de la factura. Luego mostramos los datos de la factura con la vista "mostrar_factura" y con los datos de configuración, que es el array que obtuvimos al invocar la función del modelo.

Con esto hemos podido ver un controlador simplificado, que utiliza tanto un modelo como una vista para mostrar el contenido de una factura que se ha traído de la base datos. Por fin hemos visto todos los componentes del MVC trabajando por separado y coordinados desde el controlador. Espero que hasta este punto haya quedado claro al menos el modo en el que trabajaremos con CodeIgniter, aunque todavía hay muchas cosas en el aire que trataremos de explicar en el futuro.

Conectar con una base de datos

Pero antes de terminar este tema, por si alguien desea hacer sus primeras pruebas para construir un modelo, conviene explicar cómo conectar con la base de datos en CodeIgniter. En realidad existen diversos modos de conexión, automática y manual, pero no los vamos a ver todos ahora.

Veremos simplemente el método más sencillo para hacer la conexión con la base de datos, que es la conexión automática. Ésta la realiza CodeIgniter por nosotros en cada página que se solicite al servidor y tenemos que configurarla en el archivo de configuración autoload.php (system/application/config/autoload.php). En ese archivo veremos un array de librerías que se tienen que incluir en todos los controladores, array "libraries". En ese array tenemos que colocar la librería 'database', de una forma como esta:

$autoload['libraries'] = array('database', 'otras_librerias...");

Además, tendremos que modificar otro archivo de configuración llamado database.php (system/application/config/database.php), colocando todos los datos de la base de datos que queremos usar: el servidor, usuario, contraseña, base de datos, etc. Por ejemplo, esto sería un ejemplo de configuración de una base de datos que tenemos en local.

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "facturacion";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual