$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();
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.
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.
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";
| Autocarga en Kohana Por: Pablo | 18/2/2010
|
| No es dificil | 20/3/2010 |
| Autocargar modelos en codeigniter | 20/3/2010 |
![]() beni088... | Trabajar con varias bbdd de forma simultánea | 05/7/2010 |