Hace tiempo me diseñe una clase para trabajar con Bases de datos en proyectos donde no utilizaba Laravel. Pues el ORM de Laravel me encanta y quería hacer algo muy parecido a ese ORM para no tener que escribir largas sentencias SQL, con los consecuentes fallos de escritura que puden aparecer.
Asi que quisiera compartir esta clase con la comunidad, pues hasta ahora era solo para mi y viendo, a todas las personas que publican aquí, como mezclan en un mismo archivo codigo html, php y sql pues decidí, al menos, ahorrarle esos trabajitos extras con esta clase.
Está construida sobe PDO, así que quien quiera utilizarla, tiene que activar la extensiones pdo de php dependiendo del tipo de base de datos que vaya a utilizar.
Como ya saben muchos, PDO es capaz de trabajar con diferentes bases de datos entre las mas conocidas, MySql, SQL Server, SQL Lite y ODBC.
Si quereis usarla descargadla haciendo clic aqui
Ahora unos ejemplos para comenzarla a usar:
La conexión
Código PHP:
# El puerto es opcional
$db = new DBManager('host', 'username', 'password', 'database name', 'driver', 'port')
Código PHP:
/* Para probar la conexión antes de poneros a escribir código como posesos,
siempre es mejor probar la conexión así que hay una función para tal efecto */
$db->testConnection();
# Retornará true o false
INSERT
Código PHP:
$array = [
'campo1' => 'valor1',
'campo2' => 'valor2',
...
];
$db->insert('tabla', $array);
Código PHP:
$array = [
'campo1' => 'valor1',
'campo2' => 'valor2',
...
];
$db->where('campo', $valor);
$db->update('tabla', $array);
Código PHP:
$db->getCount('tabla', 'campo');
Código PHP:
# Traer datos de la tabla
$db->get('tabla');
# Traer solo algunos campos de la tabla
$select = ['campo1', 'campo2', ...];
$db->get('tabla', $select);
#Realizar un join
/* El tipo de JOIN puede ser los que permita PDO que en principio son
INNER, LEFT, RIGHT Y FULL. Si falla, es muy probable que PDO no lo permita hacer.*/
$db->join('tabla2', 'tabla1', 'campo_tabla1', 'campo_tabla2', 'tipo_join');
$db->get('tabla1');
#NOTA: se puede realizar más de un join, solo hay que ponerlos todos antes del $db->get();
# Traer datos según valor(es)
# Puede ser solo por un filtro
$db->where('campo', 'valor');
$db->get('tabla');
# Como puede ser por varios
$db->where('campo1', 'valor1');
$db->where('campo2', 'valor2');
$db->get('tabla');
# Traer datos ordenados por un campo, si se agrega lo siguiente, por defecto el orden será DESC
$db->orderby('campo');
$db->get('tabla');
# Pero si lo queremos ASC
$db->orderby('campo', 'A');
$db->get('tabla');
# Complicando el query
$db->where('campo1', 'valor1');
$db->where('campo2', 'valor2');
$db->join('tabla2', 'tabla1', 'campo_tabla1', 'campo_tabla2', 'tipo_join');
$db->orderby('campo');
$db->get('tabla1');
Código PHP:
$db->dd($db->get('tabla');
Código PHP:
# Solo es necesario actibar la opción dentro de $db->get(), $db->insert() o $db->update()
$db->get('tabla', null, 1);
$db->insert('tabla', $array, 1);
$db->update('tabla', $array, 1);
Si da fallos en la construcción de SQL, impriman el SQL en pantalla que genera, copienlo y pruebenlo en un gestor de base de datos como phpMyAdmin, lo más probable es que se hayan equivocado ustedes al setear cada función.
Esto es PDO, así que hay sentencias que aunque funcionen en MySQL, no quiere decir que funcionen con PDO. Para ello consulten la documentación de PDO para saber qué pueden hacer y qué no respecto a MySQL
Espero que lo disfruten y les ayude acelerando su propósito de cambiar el mundo.
Un saludo a todos