La clase Model de Codeigniter es la clase que nos permite realizar la consultas contra la base de datos. De esta forma si en algún momento decidieramos cambiar el motor de base de datos, no afectaría ni a los controladores ni a las vistas de nuestra aplicación web.
Estos ficheros php se encuentran dentro de la carpeta "models".
Un ejemplo de archivo sería el siguiente:
class User_model extends CI_Model {
function __construct()
{
parent::__construct();
}
}
Este fichero lo guardariamos en la carpeta models con el nombre de: "user_model.php".
En el ejemplo anterior, vemos la declaración de un objeto model con la función "construct".
Simplemente hereda las funciones de CI_Model, que es la clase del core de Codeigniter que contiene todas las funciones de consulta, inserción, actualización y borrado de datos de la BBDD.
Codeigniter tiene una característica muy buena, ya que permite realizar este tipo de acciones de manera muy sencilla, gracias al active record.
Active record son funciones que montan automáticamente la consulta a la base de datos, pasándole los parámetros que deseeamos.
Como por ejemplo:
$query = $this->db->get('users');
La siguiente linea de código montaría la siguiente consulta:
// Produce: SELECT * FROM users
Dependiendo si el resultado es un conjunto de filas o simplemente una fila, utilizaremos la función "result(), o "row()".
Veamos un ejemplo completo
class User_model extends CI_Model {
function __construct()
{
parent::__construct();
}
public function getUsers(){
$query = $this->db->get('users');
return $query->result();
}
}
El siguiente ejemplo devolvería múltiples filas de resultados de la tabla users.
¿Cómo utilizar esta función para recuperar los datos?
Una vez tenemos el fichero model construido, lo que se debería de hacer es llamar a la función desde el fichero controlador, y se haría de la siguiente manera:
$datos['usuarios'] = $this->user_model->getusers();
Donde $datos['usuarios'] es el array que contendrá el conjunto de objetos de la consulta anterior.
"No voy a explicar como se crea un controlador ni como pasar los datos al fichero vista, ya que ya está explicado en los post siguientes."
Para poder recuperar cada uno de los valores, se utilizaría la función "foreach" dentro del fichero vista.
<?php
foreach($usuarios as $user){
echo $user->id;
echo "
echo $user->name;
}
?>
Se podría realizar el foreach dentro del controlador de la siguiente forma:
<?php
foreach($datos['usuarios'] as $user){
echo $user->id;
echo "
echo $user->name;
}
?>
Podeis encontrar mas información en la siguiente url:
http://ellislab.com/codeigniter/user-guide/database/active_record.html
No hay comentarios:
Publicar un comentario