Sentencias SQL utilizando sistema de objetos de CodeIgniter

Iniciado por DeBobiPro, Enero 20, 2016, 03:04:30 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Muy buenas comunidad, quiero abrir este hilo para debatir sobre el uso del sistema de objetos de CodeIgniter para utilizar sentencias SQL, mostraré algunos ejemplos particulares, pero si tienen alguna duda la podemos resolver aquí.

bueno, lo más fácil es realizar la consulta con la función "query()" de esta manera

Código: php
$query = $this->db->query("SELECT username, password FROM users WHERE id_user = 1;");


pero este código se puede separar gracias al sistema de objetos que nos ofrece CodeIgniter.

La misma sentencia SQL quedaría

Código: php

$this->db->where('id_user', 1);
$this->db->select('username, password');
$consulta = $this->db->get('users');


Y si se requiere utilizar la comparación del WHERE con alguna variable simplemente se reemplaza el número por la variable
Código: php

$id = 1;
$this->db->where('id_user', $id);
$this->db->select('username, password');
$consulta = $this->db->get('users');


y para agregar un "JOIN ON", "ORDER BY" y "GROUP BY" sería de la siguiente manera

Código: php
		
$this->db->order_by('u.username', 'desc');
$this->db->group_by('e.nombre');
$this->db->join('empleo e','e.id_empleo = u.id_empleo');
$this->db->select('u.username, u.password, e.salario"');
$consulta = $this->db->get('users u');


Es interesante ver que se escribe prácticamente en orden inverso a la lectura tradicional, si cambian el orden puede que no les retorne exactamente lo que están buscando.


Todo esto, para que funcione realmente debe estar en una función declarada dentro de los modelos de CodeIgniter.
Para definir un modelo se hace de la siguiente manera
Código: php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Mi_modelo extends CI_Model {
public function miFuncion(){
// Código acá
}

}


Y no se olviden de cargar la librería que permite utilizar las bases de datos, pueden cargarlo en el archivo autoload.php editando la siguiente linea:
Código: php
$autoload['libraries'] = array('database');


De esta manera no tendrán que cargar la librería cada vez que usen una consulta SQL
Nivel 77 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta