Clase Db

De ZanPHP
zan/classes/class.db.php

Esta clase permite la creación de consultas y la manipulación de una base de datos.


Contenido

Cargando esta clase

Esta clase es cargada usando el siguiente código en los modelos:

 $this->Db = $this->db();


Atributos

@var private $caching = FALSE
@var private static $connection = FALSE
@var private $encode = TRUE
@var private $fetchMode = "assoc"
@var private $fields
@var private $inserts = 0
@var private $join
@var private $primaryKey = FALSE
@var private $query
@var private $row
@var private $Rs = NULL
@var private $select = "SELECT *"
@var private $SQL = NULL
@var private $table
@var private $values
@var private $where = NULL

__construct()

Se encarga de cargar la clase Cache, el archivo de configuración "database", el archivo y el helper de excepciones y manda a llamar al método connect().

begin()

Manda a llamar al método begin() de la clase del controlador de base de datos correspondiente.

cache($status = FALSE)

Inicializa el atributo $this->caching, por defecto el cache está inactivo.

call($procedure)

Ejecuta un procedimiento almacenado y los valores los retorna en forma de array asociativo.

 $data = $this->Db->call("MyProcedure(1, 2)");

close()

Cierra la conexión a la base de datos.

columns($table)

Obtiene las columnas de una tabla y las retorna en forma de array asociativo.

 $data = $this->Db->columns("mytable");

commit()

Manda a llamar al método commit() de la clase del controlador de base de datos correspondiente.

connect()

Selecciona el driver específicado en el archivo de configuración de bases de datos y carga la clase correspondiente al controlador, pudiendo ser MsSQL, MySQL, MySQLi, PgSQL, entre otros, y después realiza la conexión.

countAll($table = NULL)

Retorna el total de registros de una tabla específicada, se puede específicar directamente la tabla o utilizar el método table().

 $count = $this->Db->countAll("mytable");


 $this->table("mytable");
 $count = $this->Db->countAll();

countBySQL($SQL, $table = NULL)

Retorna el total de registros de una tabla haciendo uso de una consulta SQL, se puede específicar directamente la tabla o utilizar el método table().

 $count = $this->Db->countBySQL("Age >= 18", "students");


 $this->Db->table("students");
 $count = $this->Db->countBySQL("Age >= 18");

data($query)

Se encarga de procesar las consultas SQL y obtener los resultados en manera de vector, los datos por defecto serán pasados a la función encoding() y nos retornará siempre una matriz de resultados, este método no se utiliza directamente, los demás métodos lo mandan a llamar.

Retorna una matriz como la siguiente:

array(2) {
  [0] =>
   array(2) {
     ["ID"]    => int(1)
     ["Field"] => string(5) "Value"
   }
  
  [1] =>
   array(2) {
     ["ID"]    => int(2)
     ["Field"] => string(5) "Other Value"
   }
}

delete($ID = 0, $table = NULL)

Elimina un registro por ID, se puede específicar directamente la tabla o utilizar el método table().

 $this->Db->delete(1, "contacts");


 $this->Db->table("contacts");
 $this->Db->delete(1);

deleteBy($field = NULL, $value = NULL, $table = NULL, $limit = 1)

Elimina uno o varios registros por medio de un campo y valor definido, se puede específicar la tabla directamente o utilizar el método table().

 $this->Db->deleteBy("Email", "contact@zanphp.com", "users");


 $this->Db->table("users");
 $this->Db->deleteBy("Email", "contact@zanphp.com");


 $this->Db->deleteBy("Status", "Active", "users", 10);

deleteBySQL($SQL = NULL, $table = NULL)

Elimina uno o varios registros por medio de una consulta SQL, se puede específicar la tabla directamente o utilizar el método table().

 $this->Db->deleteBySQL("Age >= 18 AND State = 'Active' LIMIT 5, "students");


 $this->table("students");
 $this->Db->deleteBySQL("Age >= 18 AND State = 'Active' LIMIT 5);

encode($encode = TRUE)

Inicializa el atributo $this->encode, por defecto esta en TRUE.

encoding($rows)

Si el atributo $this->encode esta en TRUE, el método encoding se encargará de procesar la información obtenida de la base de datos para pasarla por medio de la función encode() del helper string.

fetch($count = 0)

Manda a llamar al método fetch() del controlador de base de datos correspondiente, retorna un array asociativo, escalar o un objeto, todo depende de lo que se específique en el método fetchMode(), por defecto retornará un array asociativo.

fetchMode($fetch = "assoc")

Específica el modo que serán retornados los valores obtenidos de las tablas, por defecto esta específicado "assoc" lo que nos retornará un array asociativo.

find($ID, $table = NULL)

Encuentra un registro por medio del ID, se puede específicar la tabla o utilizar el método table().

 $data = $this->Db->find(1, "users");


 $this->Db->table("users");
 $data = $this->Db->find(1);

findAll($table = NULL, $group = NULL, $order = NULL, $limit = NULL)

Encuentra todos los registros de una tabla, se puede específicar directamente o utilizar el método table().

 $data = $this->Db->findAll("users");


 $this->Db->table("users");
 $data = $this->Db->findAll();

findBy($field = NULL, $value = NULL, $table = NULL, $group = NULL, $order = NULL, $limit = NULL)

Encuentra uno o varios registros por medio de un campo y valor, se puede específicar la tabla o utilizar el método table().

 $data = $this->Db->findBy("Username", "ZanPHP", "users");


 $this->Db->table("users");
 $data = $this->Db->findBy("Username", "ZanPHP");


 $data = $this->Db->findBy("State", "Active", "users", NULL, "ID_User DESC", 10);

findBySQL($SQL, $table = NULL, $group = NULL, $order = NULL, $limit = NULL)

Encuentra uno o varios registros por medio de una consulta SQL, se puede específicar la tabla o utilizar el método table().

 $data = $this->Db->findBySQL("Age >= 18 AND Gender = 'Male'", "students");


 $this->Db->table("students");
 $data = $this->Db->findBySQL("Age >= 18 AND Gender = 'Male'");

findFirst($table = NULL)

Encuentra el primer registro de una tabla.

 $data = $this->Db->findFirst("users");


 $this->Db->table("users");
 $data = $this->Db->findFirst();

findLast($table = NULL)

Encuentra el último registro de una tabla.

 $data = $this->Db->findLast("users");


 $this->Db->table("users");
 $data = $this->Db->findLast();

free()

Libera memoria después de una consulta SQL.

from($table)

Selecciona una tabla.

 $this->Db->from("mytable");

get($table = NULL, $limit = 0, $offset = 0)

Obtiene el resultado de una consulta específicada, o todos los registros de una tabla específicada.

 //Gets all data fron users.
 $data = $this->Db->get("users");


 $this->Db->select("Username, Email");
 $this->Db->from("users");
 $this->Db->where("Username = 'ZanPHP' AND Pwd = '99b84460aa941d668e60262be137c7187045ed45'");
 
 $data = $this->Db->get();

getTable($table)

Transforma una tabla específicada, le concatena el prefijo (_dbPfx) específicado en el archivo de config.database.php

 //Returns zan_users
 $table = $this->Db->getTable("users");

getWhere($table, $where, $limit = 0, $offset = 0)

Genera una consulta SQL, cada posición del array será pasada como un AND.

 $where = array(
    "Username" => "ZanPHP",
    "Pwd"      => "99b94460aa941d668e60262be137c7187045fd45"
 );
 
 //SELECT * FROM zan_users WHERE Username = 'ZanPHP' AND Pwd = '99b94460aa941d668e60262be137c7187045fd45'
 $data = $this->Db->getWhere("users", $where);

insert($table, $data)

Inserta un registro en una tabla.

 $data = array(
    "Username"   => "ZanPHP",
    "Pwd"        => "99b94460aa941d668e60262be137c7187045fd45",
    "Email"      => "webmaster@zanphp.com"
 );
 
 //INSERT INTO zan_users (Username, Pwd, Email) VALUES ('ZanPHP', '99b94460aa941d668e60262be137c7187045fd45', 'webmaster@zanphp.com')
 $this->Db->insert("users", $data);

insertBatch($table, $data)

Inserta varios registros en una tabla.

 $data = array(
    0 => array(
            "Username" => "ZanPHP",
            "Pwd"      => "99b94460aa941d668e60262be137c7187045fd45",
            "Email"    => "webmaster@zanphp.com"
         ),
 
    1 => array(
            "Username" => "CZantany",
            "Pwd"      => "5679sad6sdfdf941d66gffg3560dfg187045fd47",
            "Email"    => "czantany@zanphp.com"
         ), 
 );
 
 /*
  * INSERT INTO zan_users (Username, Pwd, Email) VALUES 
  * ('ZanPHP', '99b94460aa941d668e60262be137c7187045fd45', 'webmaster@zanphp.com'),
  * ('CZantany', '5679sad6sdfdf941d66gffg3560dfg187045fd47', 'czantany@zanphp.com')
  */
 $this->Db->insertBatch("users", $data);

insertID($table = NULL)

Retorna el último ID insertado.

 $data = array(
    "Username"   => "ZanPHP",
    "Pwd"        => "99b94460aa941d668e60262be137c7187045fd45",
    "Email"      => "webmaster@zanphp.com"
 );
 
 //INSERT INTO zan_users (Username, Pwd, Email) VALUES ('ZanPHP', '99b94460aa941d668e60262be137c7187045fd45', 'webmaster@zanphp.com')
 $this->Db->insert("users", $data);
 
 //If is the first record then return 1
 $lastID = $this->Db->insertID();

join($table, $condition, $position = FALSE)

Te permite crear un Join en tu consulta SQL.

 $this->Db->select("*");
 $this->Db->from("blog");
 $this->Db->join("comments", "comments.ID_Comment = blog.ID_Post");
 
 //SELECT * FROM blog JOIN comments ON comments.ID_Comment = blog.ID_Post
 $data = $this->Db->get();

like($data, $match = NULL, $position = "both")

Te permite hacer búsquedas.

 $this->Db->select("*");
 $this->Db->from("blog");
 $this->Db->like("Title", "ZanPHP"); 
 
 //SELECT * FROM zan_blog WHERE Title LIKE '%ZanPHP%' 
 $data = $this->Db->get();


 $this->Db->select("*");
 $this->Db->from("blog");
 
 $data = array(
    "Title"   => "ZanPHP",
    "Content" => "ZanPHP"
 );
 
 $this->Db->like($data); 
 
 //SELECT * FROM zan_blog WHERE Title LIKE '%ZanPHP%' AND Content LIKE '%ZanPHP%'
 $data = $this->Db->get();


 $this->Db->select("*");
 $this->Db->from("blog");
 $this->Db->like("Title", "ZanPHP", "before"); 
 
 //SELECT * FROM zan_blog WHERE Title LIKE '%ZanPHP' 
 $data = $this->Db->get();


 $this->Db->select("*");
 $this->Db->from("blog");
 $this->Db->like("Title", "ZanPHP", "after"); 
 
 //SELECT * FROM zan_blog WHERE Title LIKE 'ZanPHP%' 
 $data = $this->Db->get();

notLike($data, $match = FALSE, $position = "both")

Es idéntica a like(), solo que creas consultas del tipo NOT LIKE.

 $this->Db->select("*");
 $this->Db->from("blog");
 $this->Db->notLike("Title", "ZanPHP"); 
 
 //SELECT * FROM zan_blog WHERE Title NOT LIKE '%ZanPHP%' 
 $data = $this->Db->get();

orLike($data, $match = FALSE, $position = "both")

Es idéntica a like(), solo que te hace consultas de tipo OR.

 $this->Db->select("*");
 $this->Db->from("blog");
 
 $data = array(
    "Title"   => "ZanPHP",
    "Content" => "ZanPHP"
 );
 
 $this->Db->orLike($data); 
 
 //SELECT * FROM zan_blog WHERE Title LIKE '%ZanPHP%' OR Content LIKE '%ZanPHP%'
 $data = $this->Db->get();

orWhereIn($field, $data)

Te ayuda a crear consultas tipo WHERE IN pero utilizando OR.

 $this->Db->select("*");
 $this->Db->from("users");
 $this->Db->where("Username", "Carlos");
 
 $users = array("ZanPHP", "CZantany", "Max");
 
 $this->Db->orWhereIn("Username", $users);
 
 //SELECT * FROM zan_users WHERE Username = 'Carlos' OR Username IN ("ZanPHP", "CZantany", "Max")
 $data = $this->Db->get();

orWhereNotIn($field, $data)

Genera una consulta del tipo NOT IN.

 $this->Db->select("*");
 $this->Db->from("users");
 $this->Db->where("Username", "Carlos");
 
 $users = array("ZanPHP", "CZantany", "Max");
 
 $this->Db->orWhereNotIn("Username", $users);
 
 //SELECT * FROM zan_users WHERE Username = 'Carlos' OR Username NOT IN ("ZanPHP", "CZantany", "Max")
 $data = $this->Db->get();

query($query)

Ejecuta una consulta libre.

 $data = $this->Db->query("SELECT * FROM zan_blog WHERE ID_Post = 17");

rollBack()

Manda a llamar el método rollBack() del controlador de la base de datos correspondiente.

rows()

Retorna el número de registros encontrados en una consulta.

save($option = NULL)

Realiza distintas acciones según la opción pasada como parámetro.

Si se le pasa NULL, insertará un registro, si se le pasa un ID, mandará a llamar al método update(), y si se le pasa un FALSE, mandará a llamar al método updateBySQL().

 $this->table("blog", "Title, Content");
 $this->values("'Welcome to ZanPHP', 'Hi, welcome to ZanPHP website!'");
 $this->save();


 $this->table("blog");
 $this->values("Title = 'Welcome to ZanPHP Part 2', Content = 'Hi, welcome to ZanPHP website! part 2.'");
 $this->save(1);


 $this->table("blog");
 $this->values("Title = 'Welcome to ZanPHP Part 2', Content = 'Hi, welcome to ZanPHP website! part 2.' WHERE Slug = 'welcome-to-zanphp'");
 $this->save(FALSE);

select($fields = "*", $normal = TRUE)

Te permite hacer un SELECT en tu consulta.

  $this->Db->select("Username, Email");
 
  //SELECT Username, Email FROM zan_users
  $data = $this->Db->get("users");

selectAvg($field, $as = NULL)

Te permite hacer un SELECT AVG en tu consulta.

  $this->Db->selectAvg("Age");
 
  //SELECT AVG(Age) AS Age FROM zan_students
  $data = $this->Db->get("students");

selectMax($field, $as = FALSE)

Te permite hacer un SELECT MAX en tu consulta.

  $this->Db->selectMax("Age");
 
  //SELECT MAX(Age) AS Age FROM zan_students
  $data = $this->Db->get("students");

selectMin($field, $as = NULL)

Te permite hacer un SELECT MIN en tu consulta.

  $this->Db->selectMin("Age");
 
  //SELECT MIN(Age) AS Age FROM zan_students
  $data = $this->Db->get("students");

selectSum($field, $as = NULL)

Te permite hacer un SELECT SUM en tu consulta.

  $this->Db->selectSum("Age");
 
  //SELECT SUM(Age) AS Age FROM zan_students
  $data = $this->Db->get("students");

table($table, $fields = "*")

Selecciona una tabla y sus campos además de obtener el campo primario de dicha tabla.

 //Returns ID_Post.
 $primaryKey = $this->Db->table("blog");

update($table = NULL, $fields = NULL, $ID = 0)

Actualiza un registro de una tabla específicada.

 $data = array(
    "Username"   => "ZanPHP2",
    "Email"      => "webmaster2@zanphp.com"
 );
 
 //UPDATE zan_users SET Username = 'ZanPHP2', Email = 'webmaster2@zanphp.com' WHERE ID_User = 1
 $this->Db->update("users", $data, 1);

updateBySQL($table = NULL, $SQL = NULL)

Actualiza uno o varios registros por medio de una consulta SQL.

 //UPDATE zan_blog SET Title = 'New Title', Slug = 'new-title' WHERE Slug = 'old-title' LIMIT 1
 $this->Db->updateBySQL("blog", "Title = 'New Title', Slug = 'new-title' WHERE Slug = 'old-title' LIMIT 1");

values($values)

Asigna valores al atributo $this->values.

where($data, $value = NULL)

Sirve para crear consultas tipo WHERE.

 $this->Db->select("Username");
 $this->Db->from("users");
 $this->Db->where("Email = 'contact@milkzoft.com'");
 
 //SELECT Username FROM zan_users WHERE Email = 'contact@milkzoft.com'
 $data = $this->Db->get();

whereIn($field, $data)

Te ayuda a construir consultas tipo WHERE IN.

 $this->Db->select("*");
 $this->Db->from("users");
 
 $users = array("ZanPHP", "CZantany", "Max");
 
 $this->Db->whereIn("Username", $users);
 
 //SELECT * FROM zan_users WHERE Username IN ("ZanPHP", "CZantany", "Max")
 $data = $this->Db->get();

whereNotIn($field, $data)

Te ayuda a construir consultas tipo WHERE NOT IN.

 $this->Db->select("*");
 $this->Db->from("users");
 
 $users = array("ZanPHP", "CZantany", "Max");
 
 $this->Db->whereNotIn("Username", $users);
 
 //SELECT * FROM zan_users WHERE Username NOT IN ("ZanPHP", "CZantany", "Max")
 $data = $this->Db->get();

whereOr($data, $value = NULL)

Te ayuda a crear consultas utilizando el operador OR.

 $this->Db->select("*");
 $this->Db->from("users");
 $this->Db->where("Username", "Carlos");
 $this->Db->whereOr("Username", "ZanPHP");
 
 //SELECT * FROM zan_users WHERE Username = 'Carlos' OR Username = "ZanPHP"
 $data = $this->Db->get();


 $this->Db->select("*");
 $this->Db->from("users");
 
 $data = array(
    "Username" => "Carlos",
    "Username" => "ZanPHP"
 );
 
 $this->Db->whereOr($data);
 
 //SELECT * FROM zan_users WHERE Username = 'Carlos' OR Username = "ZanPHP"
 $data = $this->Db->get();

En.png Db Class

Left.png Traducciones Clase Email Right.png

Herramientas personales