https://github.com/offworks/overnight
A simple php-mysql query builder based on pdo
https://github.com/offworks/overnight
builder dbal mysql pdo php query
Last synced: 5 months ago
JSON representation
A simple php-mysql query builder based on pdo
- Host: GitHub
- URL: https://github.com/offworks/overnight
- Owner: offworks
- License: mit
- Created: 2016-05-30T12:28:45.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2019-06-24T11:06:07.000Z (almost 7 years ago)
- Last Synced: 2025-08-02T04:42:14.400Z (11 months ago)
- Topics: builder, dbal, mysql, pdo, php, query
- Language: PHP
- Homepage:
- Size: 31.3 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Overnight
An overnightly simple and consistent PHP-mysql query builder based on PDO.
## Installation
##### Composer
```
composer require offworks/overnight
```
##### Git clone
```
git clone https://github.com/offworks/overnight
```
then, require the autoload from the location
```
require_once __DIR__.'/path/to/overnight/src/autoload.php';
```
## Usage
#### Create connection
```
$db = \Overnight\Connection::create('localhost', 'user', 'password', 'dbname');
```
### SELECT
##### WHERE
Get an array of records
```
$users = $db->table('user')
->where('created_at > ?', array(date('Y-m-d H:i:s'))
->execute()->all();
```
Get an associated key value single (first) record
```
$user = $db->from('user')
->select('name, email, birthdate')
->where('user_id = ?', array($userId))
->execute()->first();
```
*p/s : from() is an alias of table()*
Multiple wheres
```
$tickets = $db->from('ticket')
->where('available = ? AND used = ?', array(1, 0))
->where('expiry_date < ?', array('2020-10-10'))
->andWhere('seat_type = ?', array('single'))
->orWhere('master_ticket = ?', array(1))
->execute();
// will execute something like
SELECT * FROM ticket WHERE available = 1 AND used = 0 AND expiry_date < '2020-10-10' AND seat_type = 'single'
```
##### INNER JOIN
```
$books = $db->from('book')
->innerJoin('author ON author.author_id = book.author_id')
->execute()->all();
```
##### LEFT JOIN
```
$users = $db->from('user')
->leftJoin('membership ON membership.user_id = user.user_id')
->execute()->all();
```
Parameterized join
```
$users = $db->from('book')
->innerJoin('author ON author.author_id = book.author_id AND author.is_alive = ?', array(1))
->execute()->all();
```
##### ORDER BY
```
$students = $db->from('student')
->where('is_alive = ?', array(1))
->orderBy('last_seen DESC')
->execute()->all();
```
##### GET RAW SQL
```
$sql = $db->from('news')
->innerJoin('editor ON news.editor_id = editor.editor_id')
->where('DATE(published_at) = ?', array(date('Y-m-d H:i:s')))
->orderBy('published_at DESC')
->getSql();
```
### INSERT
```
$db->insert('user')->values(array(
'name' => 'James',
'like' => 'Foo cake',
'birthdate' => '1977-05-09'
))->execute();
```
or
```
$db->insert('user', array(
'name' => 'James',
'like' => 'Foo cake',
'birthdate' => '1977-05-09'
))->execute();
```
#### Last insert id
```
$userId = $db->lastInsertId();
```
or
```
$userId = $db->insert('user')->values($values)->execute()->id();
```
### UPDATE
```
$db->update('book')
->where('book_id = ?', array($bookId))
->set(array('title' => 'the lost marble - first edition'))
->execute();
```
### DELETE
```
$db->delete('author')
->where('author_id = ?', array($authorId))
->execute();
```
## APIs
#### General
```
$query->execute()
getStatement()
$query->getSql()
$db->lastInsertId()
$db->execute(string $sql, array $values, array $params))
$db->getPdo()
```
#### Select
```
from(string $table) or table(string $table)
select(string|array $columns)
where(string $condition, array $values = array())
orWhere(string $condition, array $values = array())
orderBy(string $orderBy)
groupBy(string $groupBy)
innerJoin(string $condition, array $values = array())
leftJoin(string $condition, array $values = array())
rightJoin(string $condition, array $values = array())
limit(int $limit, int $offset = null)
having(string $condition, array $values = array())
execute()->all()
execute()->first()
```
#### Insert
```
insert(string $table, array $values = array())
values(array $values)
execute()->id()
```
#### Update
```
update(string $table)
set(array $data)
where(string $condition, array $values = array())
orWhere(string $condition, array $values = array())
```
#### Delete
```
delete(string $table)
where(string $condition, array $values = array())
orWhere(string $condition, array $values = array())
```
## License
[MIT](LICENSE.md)