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.

results matching ""

    No results matching ""