Consultas avanzadas
Vamos a ver algunos ejemplos de consultas avanzadas. Para ampliar la información de esta clase se recomienda consultar el manual de CodeIgniter.
A continuación podemos ver un ejemplo de un método llamado getLibros() del modelo Libros_model utilizando los métodos proporcionados por la clase database y que está relacionados con el patrón Active Record:
public function getLibros() {
$this->db->select('L.id, L.isbn, L.titulo, L.precio, L.editorial, A.nombre as autor');
$this->db->from('libros L');
$this->db->join('libros_autores L_A', 'L.id = L_A.fk_libros');
$this->db->join('autores A', 'A.id = L_A.fk_autores');
$query = $this->db->get();
$libros = array();
foreach ($query->result_array() as $libro)
$libros[] = $libro; unset($query); return $libros;
}
Otro ejemplo utilizando **where** para seleccionar un libro:
public function **getComentariosLibro**($id) {
public function getComentariosLibro($id) {
$this->db->select('C.id, C.autor, C.descripcion');
$this->db->from('comentarios C');
$this->db->join('libros L', 'L.id = C.fk_libros');
$this->db->where('C.fk_libros', $id);
$this->db->where('C.validado', 1);
$query = $this->db->get();
$comentarios = array();
foreach ($query->result_array() as $comentario) {
$comentarios[] = $comentario;
}
return $comentarios;
}
Un ejemplo de inserción
$usuario = array(
'nombre' => $this->input->post('nombre'),
'email' => $this->input->post('email'),
'direccion' => $this->input->post('direccion'),
'cp' => $this->input->post('cp'),
'fk_ciudades' => $this->input->post('ciudad')
);
$this->db->set($usuario);
$this->db->insert('usuarios');
//INSERT INTO usuario(nombre, email, direccion, cp, fk_ciudades) VALUES(..)
La función **set()** activa la asignación de campo-valor para las inserciones y actualizaciones.
Ejemplo de UPDATE
$this->db->where('id', $usuario['id']);
$this->db->update('usuarios', $usuario);
Para ampliar la información sobre la clase **Database** se recomienda consultar el manual de CodeIgniter.