This commit is contained in:
Juan Pablo Vial
2022-09-08 22:13:48 -04:00
parent 47d38a6595
commit 7750ab95c6

View File

@ -49,20 +49,70 @@ QueryBuilder
include_once 'vendor/autoload.php';
$qb = new QueryBuilder();
$query = $qb->select();
$query = $qb->insert();
$query = $qb->update();
$query = $qb->delete();
$query = $qb->select(<*columns>);
$query = $qb->insert(<table>);
$query = $qb->update(<table>);
$query = $qb->delete(<table>);
```
### Queries
Select
```
$query = $qb->select();
$query = $qb->select(['id', 'column1']);
#### Select
`SELECT <columns> FROM <table>[ JOIN <table2> ON <table>.<column_1> = <table2>.<column_2>][ WHERE <expr1>[ AND|OR <expr2>]][ GROUP BY <column1>[, <column2>]][ HAVING <expr1>[ AND|OR <expr2>]][ ORDER BY <column1> ASC|DESC[, <column2> ASC|DESC]]`
$query = $query->from('table');
$query = $query->joins([['table2', 'table1.column = table2.column']]);
$query = $query->where([['table2.column2', 10]]);
Mysql also include `[ LIMIT <limit>[ OFFSET <offset>]]`
```
$query = $qb->select(); // use '*' for columns
or
$query = $qb->select()->select(['id', 'column1',]);
or
$query = $qb->select(['id', 'column1',]);
$query->from('table1');
$query->joins([['table2', 'table1.column1 = table2.column21'],]);
$query->where(['table2.column22 = 10',]);
$query->groupBy(['table1.column1',]);
$query->having(['table1.column1 < 10',]);
$query->orderBy(['table2.column22',]);
$query->limit(10, 10);
```
#### Insert
`INSERT INTO <table>[ (<columns>)]`
with two options
`<select query>` or
` VALUES (<values>)`
```
$query = $qb->insert('table');
$query->columns(['column1',]);
$query->values(['value1',];
or
$query->select($select_query);
```
#### Update
`UPDATE <table> SET <column1> = <value1>[, <column2> = <value2>][ WHERE <expr1>[ AND|OR <expr2>]]`
```
$query = $qb->update('table');
$query->set([['column1', 10],]); or $query->set([['column' => 'column1', 'value' => 10],]);
$query->where(['column2 = 10', ]);
```
#### Delete
`DELETE FROM <table> WHERE <expr1>[ AND|OR <expr2>]`
```
$query = $qb->delete('table');
$query->where(['column1 = 10',]);
```
Pass the query to a string
```
$str = $query->build();
or
$str = "{$query}";
```
## TODO
Implement other databases