PHPackages                             rog-works/qb - 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. rog-works/qb

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

rog-works/qb
============

simple query builder

013PHP

Since Apr 1Pushed 8y ago1 watchersCompare

[ Source](https://github.com/rog-works/QB)[ Packagist](https://packagist.org/packages/rog-works/qb)[ RSS](/packages/rog-works-qb/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

QB
==

[](#qb)

[![Build Status](https://camo.githubusercontent.com/99c679fd995378ba88264ac93de6f2aad6d580edb070310bb368d7abb7000412/68747470733a2f2f7472617669732d63692e6f72672f726f672d776f726b732f51422e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/rog-works/QB)

使い方
===

[](#使い方)

SELECT
------

[](#select)

```
select([
		'u.id',
		'u.name',
		'u.created',
		'p.gender',
		'p.birthday',
		'c2.comment_counts',
		(new QB(
			(new QB)->select([
					'count(*)'
				])
				->from('follows')->as('f')
				->where('f.follow_user_id = u.id')
		))->as('follow_counts')->build()
	])
	->from('users')->as('u')
	->join('profiles')->as('p')
		->on('p.user_id = u.id')
	->left_join(
		(new QB)->select([
			'c.user_id',
			'count(*) as comment_counts',
		])
		->from('comments')->as('c')
		->group_by('user_id')
	)->as('c2')
		->on('c2.user_id = u.id')
	->where('u.id')->in(new QB([1, 2, 3, 4, 5]))
		->or(
			(new QB('u.created < now()'))
				->and('u.name')->like('"a%"')
		)
	->order_by([
		'p.gender',
		'u.id desc',
	])
	->limit([10, 10])
	->build();

echo $query; // SELECT u.id,u.name,u.created,p.gender,p.birthday,c2.comment_counts,(SELECT count(*) FROM follows AS f WHERE f.follow_user_id = u.id) AS follow_counts FROM users AS u JOIN profiles AS p ON p.user_id = u.id LEFT JOIN (SELECT c.user_id,count(*) as comment_counts FROM comments AS c GROUP BY user_id) AS c2 ON c2.user_id = u.id WHERE u.id IN (1,2,3,4,5) OR (u.created < now() AND u.name LIKE "a%") ORDER BY p.gender,u.id desc LIMIT 10,10
```

### フォーマット

[](#フォーマット)

```
SELECT
   u.id,
   u.name,
   u.created,
   p.gender,
   p.birthday,
   c2.comment_counts,
   (
      SELECT
         count(*)
      FROM
         follows AS f
      WHERE
         f.follow_user_id = u.id
   ) AS follow_counts
FROM
   users AS u
   JOIN
      profiles AS p
      ON p.user_id = u.id
   LEFT JOIN
      (
         SELECT
            c.user_id,
            count(*) as comment_counts
         FROM
            comments AS c
         GROUP BY
            user_id
      ) AS c2
      ON c2.user_id = u.id
WHERE
   u.id IN ( 1, 2, 3, 4, 5 )
   OR
   (
      u.created < now()
      AND u.name LIKE "a%"
   )
ORDER BY
   p.gender,
   u.id desc
LIMIT
   10,10

```

INSERT
------

[](#insert)

```
$query = (new QB)->insert_into(
	'users',
	new QB([
		'id',
		'name',
		'created',
	]))
	->values([
		new QB([1, '"1ban"', '"2018-03-31 10:00:01"']),
		new QB([2, '"2ban"', '"2018-03-31 10:00:02"']),
		new QB([3, '"3ban"', '"2018-03-31 10:00:03"']),
	])
	->build();

echo $query; // INSERT INTO users (id,name,created) VALUES (1,"1ban","2018-03-31 10:00:01"),(2,"2ban","2018-03-31 10:00:02"),(3,"3ban","2018-03-31 10:00:03")
```

### フォーマット

[](#フォーマット-1)

```
INSERT INTO users
	(id,name,created)
VALUES
	(1,"1ban","2018-03-31 10:00:01"),
	(2,"2ban","2018-03-31 10:00:02"),
	(3,"3ban","2018-03-31 10:00:03")
```

UPDATE
------

[](#update)

```
update('users')
	->set([
		'name = :name',
		'created = now()',
	])
	->where('id = :id')
	->build();

echo $query; // UPDATE users SET name = :name,created = now() WHERE id = :id
```

### フォーマット

[](#フォーマット-2)

```
UPDATE users
SET
	name = :name,
	created = now()
WHERE
	id = :id
```

ビルドフィルタリング
==========

[](#ビルドフィルタリング)

```
