PHPackages                             ridaamirini/phpquerybuilder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. ridaamirini/phpquerybuilder

ActiveLibrary[Database &amp; ORM](/categories/database)

ridaamirini/phpquerybuilder
===========================

An fast, small SQL Builder based on FluentPDO

0.1.2(8y ago)2765MITPHPPHP ^7.0

Since Aug 27Pushed 8y ago2 watchersCompare

[ Source](https://github.com/ridaamirini/PHPQueryBuilder)[ Packagist](https://packagist.org/packages/ridaamirini/phpquerybuilder)[ RSS](/packages/ridaamirini-phpquerybuilder/feed)WikiDiscussions master Synced 6d ago

READMEChangelog (2)Dependencies (5)Versions (4)Used By (0)

PHPQueryBuilder
===============

[](#phpquerybuilder)

[![Build Status](https://camo.githubusercontent.com/98fb993195847a99db6c7d42dba1c6cb27a0cc5aaa5d5101d1d746f02f572a0a/68747470733a2f2f7472617669732d63692e6f72672f72696461616d6972696e692f50485051756572794275696c6465722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/ridaamirini/PHPQueryBuilder) [![Minimum PHP Version](https://camo.githubusercontent.com/5c3072425e67297c8ef63d17acd2c86a0d2ef324f19249f2280bd7de902f63a2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344253230372e302d3838393242462e737667)](https://php.net/) [![Latest Stable Version](https://camo.githubusercontent.com/f5480626f2b818bdbb779c422d6341210698aaee901f837a6598564ea6361420/68747470733a2f2f706f7365722e707567782e6f72672f72696461616d6972696e692f70687071756572796275696c6465722f762f737461626c65)](https://packagist.org/packages/ridaamirini/phpquerybuilder) [![Latest Unstable Version](https://camo.githubusercontent.com/0af54fbb5d331dec79cb88060c6e71c65efa74a843dfc1f6076426d5795a4f44/68747470733a2f2f706f7365722e707567782e6f72672f72696461616d6972696e692f70687071756572796275696c6465722f762f756e737461626c65)](https://packagist.org/packages/ridaamirini/phpquerybuilder) [![Code Climate](https://camo.githubusercontent.com/1849363293d404429dc4545ab2474de881747ee6db560e58e3be68081af04baf/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f72696461616d6972696e692f50485051756572794275696c6465722f6261646765732f6770612e737667)](https://codeclimate.com/github/ridaamirini/PHPQueryBuilder) [![Total Downloads](https://camo.githubusercontent.com/20e7c321764de14bd967f4cd8bcff3449f8c58674b82c2be79c9cc1d938db732/68747470733a2f2f706f7365722e707567782e6f72672f72696461616d6972696e692f70687071756572796275696c6465722f646f776e6c6f616473)](https://packagist.org/packages/ridaamirini/phpbquerybuilder) [![MIT licensed](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](https://raw.githubusercontent.com/hyperium/hyper/master/LICENSE) [![composer.lock](https://camo.githubusercontent.com/094d17bc2c26904dac70d793c3206bbf50a03ad2e07071f19417566e511eafd8/68747470733a2f2f706f7365722e707567782e6f72672f72696461616d6972696e692f70687071756572796275696c6465722f636f6d706f7365726c6f636b)](https://packagist.org/packages/ridaamirini/phpquerybuilder)

An fast, small SQL Builder based on [FluentPDO](https://github.com/envms/fluentpdo)

Features
--------

[](#features)

- Simply create queries step by step
- Smart join builder
- Build SELECT, INSERT, UPDATE &amp; DELETE queries
- Small and fast
- Type hinting with code completion in smart IDEs
- Requires PHP 7.0+
- PHP 5.6+ compatibility coming soon

Install
-------

[](#install)

### Composer

[](#composer)

Add in your `composer.json`:

```
"require": {
	...
	"ridaamirini/phpquerybuilder": "^0.1.1"
}

```

then update your dependencies with `composer update`.

OR

For the latest dev version

```
composer require ridaamirini/phpquerybuilder:dev-master

```

Start usage
-----------

[](#start-usage)

PHPQueryBuilder is easy to use:

```
QueryBuilder::create()->select('article')
                      ->where('published_at > ?', 1)
		      ->orderBy('published_at DESC')
		      ->limit(5)
		      ->getQuery();
```

output query is:

```
SELECT article.* FROM article WHERE published_at > 1 ORDER BY published_at DESC LIMIT 5
```

Smart join builder (how to build queries)
-----------------------------------------

[](#smart-join-builder-how-to-build-queries)

If you want to join table you can use full sql join syntax. For example we would like to show list of articles with author name:

```
$query = QueryBuilder::create()->select('article')
                               ->leftJoin('user ON user.id = article.user_id')
                               ->select('user.name')
                               ->getQuery();
```

It was not so much smart, was it? ;-) If your database uses convention for primary and foreign key names, you can write only:

```
$query = QueryBuilder::create()->select('article')->leftJoin('user')->select('user.name')->getQuery();
```

Smarter? May be. but **best practice how to write joins is not to write any joins ;-)**

```
$query = QueryBuilder::create()->select('article')->select('user.name')->getQuery();
```

All three commands create same query:

```
SELECT article.*, user.name FROM article LEFT JOIN user ON user.id = article.user_id
```

Simple CRUD Query Examples
--------------------------

[](#simple-crud-query-examples)

##### SELECT

[](#select)

```
$query = QueryCollection::create()->select('article')->where('id', 1)->getQuery();
// or shortly if you select one row by primary key
$query = QueryCollection::create()->from('user', 1)->getQuery();
```

##### INSERT

[](#insert)

```
$values = ['title' => 'article 1', 'content' => 'content 1'];
$query = QueryCollection::create()->insert('article')->values($values)->getQuery();
// or shortly
$query = QueryCollection::create()->insert('article', $values)->getQuery();
```

##### UPDATE

[](#update)

```
$set = ['published_at' => new QueryBuilderLiteral('NOW()')];
$query = QueryCollection::create()->update('article')->set($set)->where('id', 1)->getQuery();
// or shortly if you update one row by primary key
$query = QueryCollection::create()->update('article', $set, 1)->getQuery();
```

##### DELETE

[](#delete)

```
$query = QueryCollection::create()->delete('article')->where('id', 1)->getQuery();
// or shortly if you delete one row by primary key
$query = QueryCollection::create()->delete('article', 1)->getQuery();
```

CRUD QueryCollection Examples and PHPQueryBuilder CLI
-----------------------------------------------------

[](#crud-querycollection-examples-and-phpquerybuilder-cli)

### Init config file

[](#init-config-file)

```
$ vendor/bin/phpqb init

```

Insert your values (phpqb.json)

```
{
  "folder": [
    {
      "from": "./test",
      "to": "./db"
    }
  ],
  "files": [
    {
      "from": "./test.php",
      "to": "./db_2"
    }
  ],
  "excludes": [
    {
      "path": "./test/toExclude.php"
    },
    {
      "path": "./test/test_exclude"
    }
  ],
  "defaultDestination": "./path/to/default"
}
```

Run with config file

```
$ vendor/bin/phpqb dump
	OR
$ vendor/bin/phpqb dump --config

```

Run with path

```
$ vendor/bin/phpqb dump --collection /path/to/collection.php > collection.sql
	OR
$ vendor/bin/phpqb dump -c /path/to/collection.php --filename /path/to/output/output.sql

```

### Example File

[](#example-file)

```
