martes, 12 de abril de 2011

CodeIgniter, manipular Base de Datos con Active Record: Consulta de Datos

CodeIgniter trae una versión modificada del Patrón de Base de Datos Active Record, una de las ventajas que tiene utilizar este sistema a parte de una sintaxis mas abreviada, es que es independiente de la base de datos que utilices, asi, si cambias de BBDD no tendras que tocar el código. Pero también escapea automáticamente los valores que les pases.

Lo primero es verificar que en el archivo de configuración de la BBDD en codeIgniter, application/config/database.php, la variable $active_record = TRUE debe estar a TRUE, si no se va a utilizar la clase Active Record es recomendable desactivar esta clase dandole a la variable mencionada el valor de FALSE.


Instrucciones más usadas:

$this->db->get();

Ejecuta la consulta de selección y devuelve el resultado. Se suele combinar con otros comandos, por si sola es la select más sencilla que podemos hacer:

$consulta = $this->db->get('mitabla');

//SELECT * FROM mitabla

Si a la anterior consulta, queremos especificar los datos a seleccionar y filtrar añadiríamos estas lineas:

$this->db->select('titulo, descripcion');
$this->db->from('mitabla');
$this->db->where('nombre', $nombre);
$this->db->where('fecha <', $fec);
$this->db->order_by("titulo", "desc");
$consulta = $this->db->get();

// SELECT titulo, descripcion FROM mitabla WHERE nombre = 'nombre' AND fecha < 'fec'

El AND lo añade directamente la sentencia $this->db->where y si no ponemos ningún signo nos añade directamente el =, sino el que especifiquemos (fijarse en las dos sentencias where).

También se puede hacer mediante un arreglo asociativo:

$datos = array ('nombre' => $nombre, 'fecha <' => $fec, 'titulo !=' => $titulo);
$this->db->where($datos);

//WHERE nombre = 'nombre' AND fecha < 'fec' AND titulo != 'titulo'



Otras instrucciones:

$this->db->get_where();
$this->db->select_max();
$this->db->select_min();
$this->db->select_avg();
$this->db->select_sum();
$this->db->join();
$this->db->or_where();
$this->db->where_in();
$this->db->or_where_in();
$this->db->where_not_in();
$this->db->or_where_not_in();
$this->db->like();
$this->db->or_like();
$this->db->not_like();
$this->db->or_not_like();
$this->db->group_by();
$this->db->distinct();
$this->db->having();
$this->db->or_having();
$this->db->limit();
$this->db->count_all_results();
$this->db->count_all();

No hay comentarios:

Publicar un comentario