https://github.com/juangamonal/simple-query-builder
Un Query Builder sencillo para PHP
https://github.com/juangamonal/simple-query-builder
builder pdo php query query-builder
Last synced: about 1 month ago
JSON representation
Un Query Builder sencillo para PHP
- Host: GitHub
- URL: https://github.com/juangamonal/simple-query-builder
- Owner: juangamonal
- Created: 2020-01-28T03:46:36.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-07-07T02:10:52.000Z (almost 5 years ago)
- Last Synced: 2025-12-14T17:04:39.600Z (7 months ago)
- Topics: builder, pdo, php, query, query-builder
- Language: PHP
- Size: 197 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Simple Query Builder 
Simple Query Builder (SQB) es una delgada capa sobre [PDO](https://www.php.net/manual/es/book.pdo.php) que provee mecanismos para simplificar la construcción y ejecución de consultas SQL. Se ejecuta a través de una API moderna inspirada en las mejores prácticas de otras librerías del mismo propósito.
## Características
- Compatible con PHP >=7.3.
- Testeado en MySql, Oracle y SQLite.
- Extensible a través de `Grammar`.
- Manejo de transacciones.
## Instalación
```sh
composer require juangamonal/sqb
```
**Nota**: para esta versión `alpha` de SQB vas a necesitar indicar en tu archivo `composer.json` la propiedad `minimum-stability` en `dev`.
## Uso
```php
use QueryBuilder\Builder;
$pdo = new PDO('...');
$builder = new Builder($pdo);
```
La instancia de `QueryBuilder` te permite encadenar métodos para realizar las consultas, por ejemplo:
```php
$builder->select('name as first_name', 'last_name', 'email')
->where('status = 1', 'age > 18')
->get();
# SELECT name AS first_name, last_name, email FROM users WHERE status = 1 AND age > 18
echo $builder->toSql();
// obteniendo resultados
$users = $builder->select('id')->from('users')->get();
// insertando datos
$builder->insert([
'id' => 1,
'name' => 'Foo'
])->into('users');
// modificando datos
$id = 1;
$builder->update([
'name' => 'Foo',
'email' => 'foo@bar.com'
])->where("id = {$id}")->execute();
// eliminado datos
$builder->delete()
->from('users')
->where("name like %Foo")
->execute();
// transacciones (callback)
$builder->transaction(function($b) {
// operaciones...
$b->insert(['id' => 1])->into('users');
$b->setTable('posts')->delete()->where('user.id = 1')->execute();
// más operaciones ...
});
// transacciones (manual)
try {
$builder->beginTransaction();
// operaciones...
$builder->insert(['id' => 1])->into('users');
$builder->setTable('posts')->delete()->where('user.id = 1')->execute();
// más operaciones ...
$builder->commit();
} catch (\Exception $e) {
$builder->rollback();
}
```
## Ejemplos
- [SELECT](examples/select.php)
- ~~INSERT~~
- ~~UPDATE~~
- ~~DELETE~~
- [WHERE](examples/where.php)
- ~~TRANSACTION~~
## TODO
- Queries RAW.
- Subqueries.
- Aggregates.
## Agradecimientos
- [Base de datos Chinook (SQLite)](https://github.com/lerocha/chinook-database/blob/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite) utilizada en los ejemplos.