Overview

Namespaces

  • Kotchasan
    • Cache
    • Database
    • Http
    • Log
    • Orm
  • None
  • PHP
  • Psr
    • Cache
    • Http
      • Message
    • Log

Classes

  • Db
  • DbCache
  • Driver
  • PdoMysqlDriver
  • Query
  • QueryBuilder
  • Schema
  • Sql

Exceptions

  • Exception
  • Overview
  • Namespace
  • Class
  • Tree

Class QueryBuilder

SQL Query builder.

Kotchasan\KBase
Extended by Kotchasan\Database\Db
Extended by Kotchasan\Database\Query
Extended by Kotchasan\Database\QueryBuilder
Namespace: Kotchasan\Database
Author: Goragod Wiriya admin@goragod.com
Since: 1.0
Setup: $driver = new PdoMysqlDriver;
Setup: $this = $driver->createQuery();
Located at Kotchasan/Database/QueryBuilder.php
Methods summary
public
# __construct( Kotchasan\Database\Driver $db )

Class constructor.

Class constructor.

Parameters

$db
database driver

Overrides

Kotchasan\Database\Db::__construct()
public static
# andWhere( mixed $condition, string $oprator = 'AND', string $id = 'id' )

ฟังก์ชั่นสร้างคำสั่ง WHERE ถ้ามีข้อมูล Where ก่อนหน้าจะ AND กับข้อมูลก่อนหน้า.

ฟังก์ชั่นสร้างคำสั่ง WHERE ถ้ามีข้อมูล Where ก่อนหน้าจะ AND กับข้อมูลก่อนหน้า.

Parameters

$condition
query string หรือ array
$oprator
defaul AND
$id
Primary Key เช่น id (default)

Returns

static

Assert

where(array('U.id', 1))->andWhere(array())->text() [==] " WHERE U.id = 1"
where(array('U.id', 1))->andWhere(array('U.id', 2))->text() [==] " WHERE (U.id = 1) AND (U.id = 2)"
where(array('U.id', 1))->andWhere(array(Sql::BETWEEN('id', 0, 1), Sql::BETWEEN('id', 0, 1)), 'OR')->text() [==] " WHERE (U.id = 1) AND (id BETWEEN 0 AND 1 OR id BETWEEN 0 AND 1)"
public static
# assignment( Kotchasan\Orm\Recordset $src )

นำเข้า property จาก Class อื่น.

นำเข้า property จาก Class อื่น.

Parameters

$src

Returns

static
public static
# cacheOn( boolean $auto_save = true )

เปิดการใช้งานแคช จะมีการตรวจสอบจากแคชก่อนการสอบถามข้อมูล.

เปิดการใช้งานแคช จะมีการตรวจสอบจากแคชก่อนการสอบถามข้อมูล.

Parameters

$auto_save
(options) true (default) บันทึกผลลัพท์อัตโนมัติ, false ต้องบันทึกแคชเอง

Returns

static
public static
# copy( )

สำเนา Class เป็นอันใหม่.

สำเนา Class เป็นอันใหม่.

Returns

static
public integer
# count( )

ประมวลผลคำสั่ง SQL และคืนค่าจำนวนแถวของผลลัพท์ คืนค่า จำนวนแถว.

ประมวลผลคำสั่ง SQL และคืนค่าจำนวนแถวของผลลัพท์ คืนค่า จำนวนแถว.

Returns

integer
public static
# delete( string $table, mixed $condition )

ฟังก์ชั่นสร้างคำสั่ง DELETE.

ฟังก์ชั่นสร้างคำสั่ง DELETE.

Parameters

$table
$condition
query string หรือ array

Returns

static

Assert

delete('user', array(array('id', 1), array('name', 'test')))->text() [==] "DELETE FROM user WHERE id = 1 AND name = 'test'"
public array
# execute( )

ประมวลผลคำสั่ง SQL คืนค่า แอเรย์ของผลลัพท์ ไม่พบข้อมูล คืนค่าแอเรย์ว่าง.

ประมวลผลคำสั่ง SQL คืนค่า แอเรย์ของผลลัพท์ ไม่พบข้อมูล คืนค่าแอเรย์ว่าง.

Returns

array
public static
# exists( string $table, mixed $condition )

ฟังก์ชั่นสร้าง SQL EXISTS.

ฟังก์ชั่นสร้าง SQL EXISTS.

Parameters

$table
ชื่อตาราง
$condition
query WHERE

Returns

static

Assert

select()->from('user U')->exists('useronline', array('member_id', 'U.id'))->text() [==] 'SELECT * FROM user AS U WHERE EXISTS (SELECT * FROM useronline WHERE member_id = U.id)'
select()->from('user U')->where(array('U.id', 1))->exists('useronline', array('member_id', 'U.id'))->text() [==] 'SELECT * FROM user AS U WHERE U.id = 1 AND EXISTS (SELECT * FROM useronline WHERE member_id = U.id)'
public static
# explain( )

คำสั่งสำหรับดูรายละเอียดการ Query.

คำสั่งสำหรับดูรายละเอียดการ Query.

Returns

static
public object|array|boolean
# first( string $fields = '*' )

ฟังก์ชั่นประมวลผลคำสั่ง SQL ข้อมูลต้องการผลลัพท์เพียงรายการเดียว คืนค่าผลลัพท์ที่พบเพียงรายการเดียว ไม่พบข้อมูลคืนค่า false.

ฟังก์ชั่นประมวลผลคำสั่ง SQL ข้อมูลต้องการผลลัพท์เพียงรายการเดียว คืนค่าผลลัพท์ที่พบเพียงรายการเดียว ไม่พบข้อมูลคืนค่า false.

Parameters

$fields
(option) รายชื่อฟิลด์ field1, field2, field3, ....

Returns

object|array|boolean
public static
# from( string $tables )

ฟังก์ชั่นสร้างคำสั่ง FROM.

ฟังก์ชั่นสร้างคำสั่ง FROM.

Parameters

$tables
ชื่อตาราง table1, table2, table3, ....

Returns

static

Assert

select()->from('user')->text() [==] "SELECT * FROM user"
select()->from('user a', 'user b')->text() [==] "SELECT * FROM user AS a, user AS b"
public array
# getValues( array $values = array() )

คืนค่าแอเร์ยเก็บพารามิเตอร์สำหรับการ bind รวมกับ $values.

คืนค่าแอเร์ยเก็บพารามิเตอร์สำหรับการ bind รวมกับ $values.

Parameters

$values

Returns

array
public static
# groupBy( string $fields )

GROUP BY.

GROUP BY.

Parameters

$fields
รายชื่อฟิล์ด เช่น field1, field2, ...

Returns

static

Assert

select()->from('user')->groupBy('MONTH(date)', 'YEAR(date)')->text() [==] 'SELECT * FROM user GROUP BY MONTH(date), YEAR(date)'
select()->from('user')->groupBy('U.id')->text() [==] 'SELECT * FROM user GROUP BY U.id'
select()->from('user')->groupBy(array('id', 'username'))->text() [==] 'SELECT * FROM user GROUP BY id, username'
public static
# having( mixed $condition, string $oprator = 'AND' )

HAVING.

HAVING.

Parameters

$condition
query string หรือ array
$oprator
defaul AND

Returns

static
public static
# insert( string $table, array $datas )

ฟังก์ชั่นสร้างคำสั่ง INSERT INTO สามารถกำหนดค่า value เป็น query string ได้.

ฟังก์ชั่นสร้างคำสั่ง INSERT INTO สามารถกำหนดค่า value เป็น query string ได้.

Parameters

$table
ชื่อตาราง
$datas
รูปแบบ array(key1=>value1, key2=>value2)

Returns

static

Assert

insert('user', array('id' => 1, 'name' => 'test'))->text() [==] "INSERT INTO user (id, name) VALUES (1, 'test')"
public static
# insertOrUpdate( string $table, array $datas )

ฟังก์ชั่นสร้างคำสั่ง INSERT INTO โดยทำการตรวจสอบ KEY ถ้ามีอยู่แล้วจะเป็นการ UPDATE ข้อมูล.

ฟังก์ชั่นสร้างคำสั่ง INSERT INTO โดยทำการตรวจสอบ KEY ถ้ามีอยู่แล้วจะเป็นการ UPDATE ข้อมูล.

Parameters

$table
ชื่อตาราง
$datas
รูปแบบ array(key1=>value1, key2=>value2)

Returns

static

Assert

insertOrUpdate('user', array('id' => 1, 'name' => 'test'))->text() [==] "INSERT INTO user (id, name) VALUES (1, 'test') ON DUPLICATE KEY UPDATE id=VALUES(id), name=VALUES(name)"
public static
# join( string $table, string|array $type, string $on, mixed $on,… )

สร้างคำสั่ง JOIN.

สร้างคำสั่ง JOIN.

Parameters

$table
ชื่อตารางที่ต้องการ join เช่น table alias
$type
$table ชื่อตารางที่ต้องการ join เช่น table alias หรือ (QueryBuilder, alias)
$on
$type เข่น INNER OUTER LEFT RIGHT
$on,…
query string หรือ array

Returns

static

Assert

join('user U', 'INNER', 1)->text() [==] " INNER JOIN user AS U ON id = 1"
join('user U', 'INNER', array('U.id', 'A.id'))->text() [==] " INNER JOIN user AS U ON U.id = A.id"
join('user U', 'INNER', array('U.id', '=', 'A.id'))->text() [==] " INNER JOIN user AS U ON U.id = A.id"
join('user U', 'INNER', array('id', '=', 1))->text() [==] " INNER JOIN user AS U ON id = 1"
join('user U', 'INNER', array(array('U.id', 'A.id'), array('U.id', 'A.id')))->text() [==] " INNER JOIN user AS U ON U.id = A.id AND U.id = A.id"
public static
# limit( integer $count, integer $start = 0 )

จำกัดผลลัพท์ และกำหนดรายการเริ่มต้น.

จำกัดผลลัพท์ และกำหนดรายการเริ่มต้น.

Parameters

$count
จำนวนผลลัท์ที่ต้องการ
$start
รายการเริ่มต้น

Returns

static

Assert

limit(10)->text() [==] " LIMIT 10"
limit(10, 1)->text() [==] " LIMIT 1,10"
public static
# notExists( string $table, mixed $condition )

ฟังก์ชั่นสร้าง SQL NOT EXISTS.

ฟังก์ชั่นสร้าง SQL NOT EXISTS.

Parameters

$table
ชื่อตาราง
$condition
query WHERE

Returns

static
public static
# orWhere( mixed $condition, string $oprator = 'AND', string $id = 'id' )

ฟังก์ชั่นสร้างคำสั่ง WHERE ถ้ามีข้อมูล Where ก่อนหน้าจะ OR กับข้อมูลก่อนหน้า.

ฟังก์ชั่นสร้างคำสั่ง WHERE ถ้ามีข้อมูล Where ก่อนหน้าจะ OR กับข้อมูลก่อนหน้า.

Parameters

$condition
query string หรือ array
$oprator
defaul AND
$id
Primary Key เช่น id (default)

Returns

static

Assert

where(array('U.id', 1))->orWhere(array())->text() [==] " WHERE U.id = 1"
where(array('U.id', 1))->orWhere(array('U.id', 2))->text() [==] " WHERE (U.id = 1) OR (U.id = 2)"
where(array('U.id', 1))->orWhere(array(Sql::BETWEEN('id', 0, 1), Sql::BETWEEN('id', 0, 1)), 'OR')->text() [==] " WHERE (U.id = 1) OR (id BETWEEN 0 AND 1 OR id BETWEEN 0 AND 1)"
public static
# order( mixed $sorts )

สร้าง query เรียงลำดับ.

สร้าง query เรียงลำดับ.

Parameters

$sorts
array('field ASC','field DESC') หรือ 'field ASC', 'field DESC', ....

Returns

static

Assert

order('id', 'id ASC')->text() [==] " ORDER BY id, id ASC"
order('id ASC')->text() [==] " ORDER BY id ASC"
order('user.id DESC')->text() [==] " ORDER BY user.id DESC"
order('id ASCD')->text() [==] ""
public static
# select( string $fields = '*' )

SELECT field1, field2, field3, ....

SELECT field1, field2, field3, ....

Parameters

$fields
(option) รายชื่อฟิลด์ field1, field2, field3, ....

Returns

static

Assert

select('U.id', 'email name', 'module')->text() [==] "SELECT U.id,email AS name,module"
select('"email" name', '0 id', '0 ไอดี')->text() [==] "SELECT 'email' AS name,0 AS id,0 AS ไอดี"
select("'email' name", '0 AS id', '0 AS ไอดี')->text() [==] "SELECT 'email' AS name,0 AS id,0 AS ไอดี"
select()->text() [==] "SELECT *"
select()->where(array('domain', Sql::strValue('kotchasan.com')))->text() [==] "SELECT * WHERE domain = 'kotchasan.com'"
select('name ชื่อ นามสกุล', 'U.idcard AS เลขประชาชน')->text() [==] "SELECT name AS ชื่อ นามสกุล,U.idcard AS เลขประชาชน"
select('table.field', 'table.field')->text() [==] "SELECT table.field,table.field"
select('table.field field', 'table.field field')->text() [==] "SELECT table.field AS field,table.field AS field"
select('table.field AS field', 'table.field AS field')->text() [==] "SELECT table.field AS field,table.field AS field"
select('U.field', 'U1.field', 'NULL id')->text() [==] "SELECT U.field,U1.field,NULL AS id"
select('U.field field', 'U1.field field')->text() [==] "SELECT U.field AS field,U1.field AS field"
select('U.field AS field', 'U1.field AS field')->text() [==] "SELECT U.field AS field,U1.field AS field"
select(Sql::YEAR('create_date', 'year'), Sql::MONTH('create_date', 'month'))->text() [==] "SELECT YEAR(create_date) AS year,MONTH(create_date) AS month"
select(array(Sql::YEAR('create_date', 'year'), Sql::MONTH('create_date', 'month')))->text() [==] "SELECT YEAR(create_date) AS year,MONTH(create_date) AS month"
public static
# selectCount( mixed $fileds = '* count' )

สร้าง query สำหรับการนับจำนวน record.

สร้าง query สำหรับการนับจำนวน record.

Parameters

$fileds
(option) 'field alias'

Returns

static

Assert

selectCount()->from('user')->text() [==] "SELECT COUNT(*) AS count FROM user"
selectCount('id ids')->from('user')->text() [==] "SELECT COUNT(id) AS ids FROM user"
selectCount('id ids', 'field alias')->from('user')->text() [==] "SELECT COUNT(id) AS ids, COUNT(field) AS alias FROM user"
public static
# selectDistinct( string $fields = '*' )

SELECT DISTINCT field1, field2, field3, ....

SELECT DISTINCT field1, field2, field3, ....

Parameters

$fields
(option) รายชื่อฟิลด์ field1, field2, field3, ....

Returns

static

Assert

selectDistinct('id')->from('user')->text() [==] "SELECT DISTINCT id FROM user"
public static
# set( array|string $datas )

UPDATE ..... SET.

UPDATE ..... SET.

Parameters

$datas
รูปแบบ array(key1 => value1, query_string) หรือ query_string

Returns

static

Assert

update('user')->set(array('key1' => 'value1', 'key2' => 2))->where(1)->text() [==] "UPDATE user SET key1=:Skey1, key2=:Skey2 WHERE id = 1"
update('user U')->set(array('U.key1' => 'value1', 'U.key2' => 2))->where(array('U.id', 1))->text() [==] "UPDATE user AS U SET U.key1=:SUkey1, U.key2=:SUkey2 WHERE U.id = 1"
update('user')->set(array('key1' => '(...)'))->text() [==] "UPDATE user SET key1=(...)"
update('user')->set(array('key1' => 'test (...)'))->text() [==] "UPDATE user SET key1=:Skey1"
update('user')->set('reply=reply+1')->text() [==] "UPDATE user SET reply=reply+1"
update('user')->set(array('id' => 1, 'reply=reply+1'))->text() [==] "UPDATE user SET id=:Sid, reply=reply+1"
update('user')->set(array('create_date' => Sql::NOW()))->text() [==] "UPDATE user SET create_date=NOW()"
update('user')->set(array('create_date' => Sql::create('SELECT * FROM a')))->text() [==] "UPDATE user SET create_date=SELECT * FROM a"
update('user')->set(array('create_date' => 'U.id'))->text() [==] "UPDATE user SET create_date=U.id"
update('user')->set(array('create_date' => '111.11'))->text() [==] "UPDATE user SET create_date=:Screatedate"
update('user')->set(array('create_date' => 'user.user'))->text() [==] "UPDATE user SET create_date=:Screatedate"
public static
# toArray( )

คืนค่าข้อมูลเป็น Array ฟังก์ชั่นนี้ใช้เรียกก่อนการสอบถามข้อมูล.

คืนค่าข้อมูลเป็น Array ฟังก์ชั่นนี้ใช้เรียกก่อนการสอบถามข้อมูล.

Returns

static
public static
# union( array $querys )

UNION.

UNION.

Parameters

$querys
แอเรย์ของ QueryBuilder หรือ Query String ที่จะนำม่า UNION

Returns

static

Assert

(Sql::create('SELECT * FROM a'), Sql::create('SELECT * FROM b'))->text() [==] "(SELECT * FROM a) UNION (SELECT * FROM b)"
(array(Sql::create('SELECT * FROM a'), Sql::create('SELECT * FROM b')))->text() [==] "(SELECT * FROM a) UNION (SELECT * FROM b)"
public static
# unionAll( array $querys )

UNION ALL.

UNION ALL.

Parameters

$querys
แอเรย์ของ QueryBuilder หรือ Query String ที่จะนำม่า UNION ALL

Returns

static

Assert

(Sql::create('SELECT * FROM a'), Sql::create('SELECT * FROM b'))->text() [==] "(SELECT * FROM a) UNION ALL (SELECT * FROM b)"
(array(Sql::create('SELECT * FROM a'), Sql::create('SELECT * FROM b')))->text() [==] "(SELECT * FROM a) UNION ALL (SELECT * FROM b)"
public static
# update( string $table )

UPDATE

UPDATE

Parameters

$table
[$table1, $table2, ....] ชื่อตาราง

Returns

static

Assert

update('user')->set(array('key1'=>'value1', 'key2'=>2))->where(array(array('id', 1), array('id', 1)))->text() [==] "UPDATE user SET key1=:Skey1, key2=:Skey2 WHERE id = 1 AND id = 1"
public static
# where( mixed $condition, string $oprator = 'AND', string $id = 'id' )

ฟังก์ชั่นสร้างคำสั่ง WHERE.

ฟังก์ชั่นสร้างคำสั่ง WHERE.

Parameters

$condition
query string หรือ array
$oprator
defaul AND
$id
Primary Key เช่น id (default)

Returns

static

Assert

where(array())->text() [==] ""
where(1)->text() [==] " WHERE id = 1"
where(array('id', 1))->text() [==] " WHERE id = 1"
where(array('id', '1'))->text() [==] " WHERE id = '1'"
where(array('domain', 'domain.tld'))->text() [==] " WHERE domain = 'domain.tld'"
where(array(1, 1))->text() [==] " WHERE 1 = 1"
where(array('U.id', 'G.id'))->text() [==] " WHERE U.id = G.id"
where(array('date', '2016-1-1 30:30'))->text() [==] " WHERE date = '2016-1-1 30:30'"
where(array('id', '=', 1))->text() [==] " WHERE id = 1"
where(Sql::create('id=1 OR (SELECT ....)'))->text() [==] " WHERE id=1 OR (SELECT ....)"
where(array('id', '=', 1))->text() [==] " WHERE id = 1"
where(array('id', 'IN', array(1, 2, '3')))->text() [==] " WHERE id IN (1, 2, '3')"
where(array(array('social', '0'), Sql::create('(...)')))->text() [==] " WHERE social = '0' AND (...)"
where(array(array(Sql::MONTH('create_date'), 1), array(Sql::YEAR('create_date'), 1)))->text() [==] " WHERE MONTH(create_date) = 1 AND YEAR(create_date) = 1"
where(array(array('id', array(1, 'a')), array('id', array('G.id', 'G.id2'))))->text() [==] " WHERE id IN (1, 'a') AND id IN (G.id, G.id2)"
where(array(array('id', array(1, 'a')), array('id', array('', 'th'))))->text() [==] " WHERE id IN (1, 'a') AND id IN ('', 'th')"
where(array('ip', 'NOT IN', array('', '192.168.1.104')))->text() [==] " WHERE ip NOT IN ('', '192.168.1.104')"
where(array('U.id', '(SELECT CASE END)'))->text() [==] " WHERE U.id = '(SELECT CASE END)'"
where(array(array(Sql::YEAR('create_date'), Sql::YEAR('S.create_date'))))->text() [==] " WHERE YEAR(create_date) = YEAR(S.create_date)"
where(array('U.id', Sql::strValue('G.id')))->text() [==] " WHERE U.id = 'G.id'"
where(Sql::ISNULL('U.id'))->text() [==] " WHERE U.id IS NULL"
where(array(array('create_date', 'A'), Sql::BETWEEN('id', 'ทดสอบ', 'ทดสอบ')))->text() [==] " WHERE create_date = 'A' AND id BETWEEN 'ทดสอบ' AND 'ทดสอบ'"
where(array(array(Sql::BETWEEN('id', 0, 1), 'OR', Sql::BETWEEN('id', 0, 1)), array(Sql::BETWEEN('id', 0, 1), 'OR', Sql::BETWEEN('id', 0, 1))), 'OR')->text() [==] " WHERE id BETWEEN 0 AND 1 OR id BETWEEN 0 AND 1 OR id BETWEEN 0 AND 1 OR id BETWEEN 0 AND 1"
Methods inherited from Kotchasan\Database\Query
aliasName(), buildGroup(), buildJoin(), buildOrder(), buildSelect(), buildValue(), buildWhere(), buildWhereValues(), debug(), fieldName(), fieldValue(), getFullTableName(), getTableName(), groupAnd(), groupOr(), quoteTableName(), text()
Methods inherited from Kotchasan\Database\Db
db(), getSetting()
Properties summary
protected boolean $toArray

ส่งออกผลลัพท์เป็น Array.

ส่งออกผลลัพท์เป็น Array.

# false
protected array $values

ตัวแปรเก็บพารามิเตอร์สำหรับการ bind.

ตัวแปรเก็บพารามิเตอร์สำหรับการ bind.

#
Properties inherited from Kotchasan\Database\Query
$debugger, $sqls
Properties inherited from Kotchasan\Database\Db
$db
Properties inherited from Kotchasan\KBase
$cfg, $request
Kotchasan API documentation generated by ApiGen