Menu

## QueryBuilder extends Query
in package

QueryBuilder.php : 23

SQL Query builder

##### Tags

setup

  $driver = new PdoMysqlDriver;

setup

  $this = $driver->createQuery();

see
  https://www.kotchasan.com/

### Table of Contents

$cfg : object
  Config class instance.
$db : Driver
  Database connection.
$debugger : int
  1 แสดง Query ข้อความอย่างเดียวสำหรับใส่ลงใน console 2 แสดง Query ด้านล่างจอภาพ
$request : Request
  Server request class instance.
$sqls : array<string|int, mixed>
  ตัวแปรเก็บคำสั่ง SQL
$toArray : bool
  ส่งออกผลลัพท์เป็น Array
$values : array<string|int, mixed>
  ตัวแปรเก็บพารามิเตอร์สำหรับการ bind
__construct() : mixed
  Class constructor
andWhere() : static
  ฟังก์ชั่นสร้างคำสั่ง WHERE ถ้ามีข้อมูล Where ก่อนหน้าจะ AND กับข้อมูลก่อนหน้า
assignment() : static
  นำเข้า property จาก Class อื่น
cacheOn() : static
  เปิดการใช้งานแคช จะมีการตรวจสอบจากแคชก่อนการสอบถามข้อมูล
copy() : static
  สำเนา Class เป็นอันใหม่
count() : int
  ประมวลผลคำสั่ง SQL และคืนค่าจำนวนแถวของผลลัพท์ คืนค่า จำนวนแถว
createTmpTable() : static
  คำสั่งสร้างตารางชั่วคราว
createView() : static
  คำสั่งสร้าง View
db() : Driver
  Get the database connection.
debug() : mixed
  คำสั่งสำหรับแสดง Query ออกทางหน้าจอ ใช้ในการ debug Query 1 แสดง Query ข้อความอย่างเดียวสำหรับใส่ลงใน console 2 แสดง Query ด้านล่างจอภาพ
delete() : static
  ฟังก์ชั่นสร้างคำสั่ง DELETE
emptyTable() : static
  ล้างตาราง
execute() : mixed
  ประมวลผลคำสั่ง SQL สำเร็จ คืนค่าแอเรย์ของผลลัพท์
exists() : static
  ฟังก์ชั่นสร้าง SQL EXISTS
explain() : static
  คำสั่งสำหรับดูรายละเอียดการ Query
first() : mixed
  ฟังก์ชั่นประมวลผลคำสั่ง SQL ข้อมูลต้องการผลลัพท์เพียงรายการเดียว คืนค่าผลลัพท์ที่พบเพียงรายการเดียว ไม่พบข้อมูลคืนค่า false
from() : static
  ฟังก์ชั่นสร้างคำสั่ง FROM
getAllSettings() : object
  Get all database settings.
getFullTableName() : string
  ฟังก์ชั่นอ่านชื่อตารางจากการตั้งค่าฐานข้อมุล คืนค่า ชื่อตารางรวม prefix ถ้าไม่มีชื่อกำหนดไว้ จะคืนค่า $table ครอบชื่อตารางด้วย ``
getSetting() : mixed
  Get the value of a database setting.
getTableName() : string
  ฟังก์ชั่นอ่านชื่อตารางจากการตั้งค่าฐานข้อมุล คืนค่า ชื่อตารางรวม prefix ถ้าไม่มีชื่อกำหนดไว้ จะคืนค่า $table
getValues() : array<string|int, mixed>
  คืนค่าแอเร์ยเก็บพารามิเตอร์สำหรับการ bind รวมกับ $values
groupBy() : static
  GROUP BY
having() : static
  HAVING
insert() : static
  ฟังก์ชั่นสร้างคำสั่ง INSERT INTO สามารถกำหนดค่า value เป็น query string ได้
insertOrUpdate() : static
  ฟังก์ชั่นสร้างคำสั่ง INSERT INTO โดยทำการตรวจสอบ KEY ถ้ามีอยู่แล้วจะเป็นการ UPDATE ข้อมูล
join() : static
  สร้างคำสั่ง JOIN
limit() : static
  จำกัดผลลัพท์ และกำหนดรายการเริ่มต้น
notExists() : static
  ฟังก์ชั่นสร้าง SQL NOT EXISTS
order() : static
  สร้าง query เรียงลำดับ
orWhere() : static
  ฟังก์ชั่นสร้างคำสั่ง WHERE ถ้ามีข้อมูล Where ก่อนหน้าจะ OR กับข้อมูลก่อนหน้า
select() : static
  SELECT `field1`, `field2`, `field3`, .
selectCount() : static
  สร้าง query สำหรับการนับจำนวน record
selectDistinct() : static
  SELECT DISTINCT `field1`, `field2`, `field3`, .
set() : static
  UPDATE ..... SET
text() : string
  ฟังก์ชั่นสร้างคำสั่ง SQL เป็นข้อความ
toArray() : static
  คืนค่าข้อมูลเป็น Array ฟังก์ชั่นนี้ใช้เรียกก่อนการสอบถามข้อมูล
union() : static
  UNION
unionAll() : static
  UNION ALL
update() : static
  UPDATE
where() : static
  ฟังก์ชั่นสร้างคำสั่ง WHERE
aliasName() : string
  ฟังก์ชั่นสร้างคีย์ สำหรับการ execute
buildGroup() : string
  สร้าง query สำหรับ GROUP BY
buildJoin() : string
  สร้างคำสั่ง JOIN ถ้าไม่มี alias คืนค่าว่าง
buildOrder() : string
  สร้าง query เรียงลำดับ
buildSelect() : string
  ฟังก์ชั่นสร้าง query string สำหรับคำสั่ง SELECT
buildValue() : string
  แปลงข้อมูลรูปแบบ SQL รูปแบบ array('field1', 'condition', 'field2') ไม่ระบุ condition หมายถึง = หรือ IN
buildWhere() : string|array<string|int, mixed>
  ฟังก์ชั่นสร้างคำสั่ง WHERE คืนค่า string สำหรับคำสั่ง WHERE หรือคืนค่า array(where, values) สำหรับใช้กับการ bind
buildWhereValues() : array<string|int, mixed>
  ฟังก์ชั่นสร้างคำสั่ง WHERE และ values ไม่ใส่ alias ให้กับชื่อฟิลด์ คืนค่า ($condition, $values)
fieldName() : string
  แปลงข้อความสำหรับชื่อฟิลด์หรือชื่อตาราง
fieldValue() : string
  แปลงข้อความสำหรับ value
groupAnd() : Sql
  ฟังก์ชั่นสำหรับจัดกลุ่มคำสั่ง และ เชื่อมแต่ละกลุ่มด้วย AND
groupOr() : Sql
  ฟังก์ชั่นสำหรับจัดกลุ่มคำสั่ง และ เชื่อมแต่ละกลุ่มด้วย OR
quoteTableName() : string
  ฟังก์ชั่นอ่านชื่อตารางและชื่อรอง และใส่ ` ครอบชื่อตารางด้วย
whereValue() : array<string|int, mixed>|string
  สร้างคำสั่ง WHERE

### Properties

#### $cfg

KBase.php : 26

Config class instance.

`protected static object $cfg`

#### $db

Db.php : 29

Database connection.

`protected Driver $db`

#### $debugger

Query.php : 28

1 แสดง Query ข้อความอย่างเดียวสำหรับใส่ลงใน console 2 แสดง Query ด้านล่างจอภาพ

`protected int $debugger = 0`

#### $request

KBase.php : 33

Server request class instance.

`protected static Request $request`

#### $sqls

Query.php : 34

ตัวแปรเก็บคำสั่ง SQL

`protected array<string|int, mixed> $sqls`

#### $toArray

QueryBuilder.php : 30

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

`protected bool $toArray = false`

#### $values

QueryBuilder.php : 36

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

`protected array<string|int, mixed> $values`

### Methods

#### __construct()

QueryBuilder.php : 43

Class constructor

`public __construct(object $db) : mixed`

##### Parameters

$db : object

  database driver

##### Return values

mixed —

#### andWhere()

QueryBuilder.php : 62

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

`public andWhere(mixed $condition[, string $oprator = 'AND' ][, string $id = 'id' ]) : static`

##### Parameters

$condition : mixed

  query string หรือ array

$oprator : string = 'AND'

  defaul AND

$id : string = 'id'

  Primary Key เช่น id (default)

##### Tags

assert

  where(array('U.id', 1))->andWhere([])->text() [==] " WHERE U.`id` = 1"

assert

  where(array('U.id', 1))->andWhere(array('U.id', 2))->text() [==] " WHERE (U.`id` = 1) AND (U.`id` = 2)"

assert

  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)"

##### Return values

static —

#### assignment()

QueryBuilder.php : 83

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

`public assignment(Recordset $src) : static`

##### Parameters

$src : Recordset

##### Return values

static —

#### cacheOn()

QueryBuilder.php : 107

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

`public cacheOn([bool $auto_save = true ]) : static`

##### Parameters

$auto_save : bool = true

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

##### Return values

static —

#### copy()

QueryBuilder.php : 118

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

`public copy() : static`

##### Return values

static —

#### count()

QueryBuilder.php : 129

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

`public count() : int`

##### Return values

int —

#### createTmpTable()

QueryBuilder.php : 231

คำสั่งสร้างตารางชั่วคราว

`public createTmpTable(string $table) : static`

##### Parameters

$table : string

  ชื่อตาราง

##### Return values

static —

#### createView()

QueryBuilder.php : 218

คำสั่งสร้าง View

`public createView(string $table) : static`

##### Parameters

$table : string

  ชื่อตาราง

##### Return values

static —

#### db()

Db.php : 46

Get the database connection.

`public db() : Driver`

##### Return values

Driver —

The database connection.

#### debug()

Query.php : 44

คำสั่งสำหรับแสดง Query ออกทางหน้าจอ ใช้ในการ debug Query 1 แสดง Query ข้อความอย่างเดียวสำหรับใส่ลงใน console 2 แสดง Query ด้านล่างจอภาพ

`public debug([int $value = 1 ]) : mixed`

##### Parameters

$value : int = 1

##### Return values

mixed —

#### delete()

QueryBuilder.php : 148

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

`public delete(string $table[, mixed $condition = [] ]) : static`

##### Parameters

$table : string
$condition : mixed = []

  query string หรือ array

##### Tags

assert

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

##### Return values

static —

#### emptyTable()

QueryBuilder.php : 768

ล้างตาราง

`public emptyTable(string $table) : static`

##### Parameters

$table : string

  ชื่อตาราง

##### Return values

static —

#### execute()

QueryBuilder.php : 162

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

`public execute() : mixed`

##### Return values

mixed —

#### exists()

QueryBuilder.php : 186

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

`public exists(string $table, mixed $condition) : static`

##### Parameters

$table : string

  ชื่อตาราง

$condition : mixed

  query WHERE

##### Tags

assert

  select()->from('user U')->exists('useronline', array('member_id', 'U.id'))->text() [==] 'SELECT * FROM `user` AS U WHERE EXISTS (SELECT 1 FROM `useronline` WHERE `member_id` = U.`id`)'

assert

  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 1 FROM `useronline` WHERE `member_id` = U.`id`)'

##### Return values

static —

#### explain()

QueryBuilder.php : 205

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

`public explain() : static`

##### Return values

static —

#### first()

QueryBuilder.php : 245

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

`public first([string $fields = '*' ]) : mixed`

##### Parameters

$fields : string = '*'

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

##### Return values

mixed —

#### from()

QueryBuilder.php : 273

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

`public from(string $tables) : static`

##### Parameters

$tables : string

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

##### Tags

assert

  select()->from('user')->text() [==] "SELECT * FROM `user`"

assert

  select()->from('user a', 'user b')->text() [==] "SELECT * FROM `user` AS `a`, `user` AS `b`"

##### Return values

static —

#### getAllSettings()

Db.php : 70

Get all database settings.

`public getAllSettings() : object`

##### Return values

object —

The database settings object.

#### getFullTableName()

Query.php : 58

ฟังก์ชั่นอ่านชื่อตารางจากการตั้งค่าฐานข้อมุล คืนค่า ชื่อตารางรวม prefix ถ้าไม่มีชื่อกำหนดไว้ จะคืนค่า $table ครอบชื่อตารางด้วย ``

`public getFullTableName(string $table) : string`

##### Parameters

$table : string

  ชื่อตารางตามที่กำหนดใน settings/datasbase.php

##### Return values

string —

#### getSetting()

Db.php : 58

Get the value of a database setting.

`public getSetting(string $key) : mixed`

##### Parameters

$key : string

  The setting key.

##### Return values

mixed —

The value of the setting.

#### getTableName()

Query.php : 72

ฟังก์ชั่นอ่านชื่อตารางจากการตั้งค่าฐานข้อมุล คืนค่า ชื่อตารางรวม prefix ถ้าไม่มีชื่อกำหนดไว้ จะคืนค่า $table

`public getTableName(string $table) : string`

##### Parameters

$table : string

  ชื่อตารางตามที่กำหนดใน settings/datasbase.php

##### Return values

string —

#### getValues()

QueryBuilder.php : 292

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

`public getValues([array<string|int, mixed> $values = [] ]) : array<string|int, mixed>`

##### Parameters

$values : array<string|int, mixed> = []

##### Return values

array<string|int, mixed> —

#### groupBy()

QueryBuilder.php : 314

GROUP BY

`public groupBy(string $fields) : static`

##### Parameters

$fields : string

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

##### Tags

assert

  select()->from('user')->groupBy('SQL(MONTH(`date`))', 'SQL(YEAR(`date`))')->text() [==] 'SELECT * FROM `user` GROUP BY MONTH(`date`), YEAR(`date`)'

assert

  select()->from('user')->groupBy('U.id')->text() [==] 'SELECT * FROM `user` GROUP BY U.`id`'

assert

  select()->from('user')->groupBy(array('id', 'username'))->text() [==] 'SELECT * FROM `user` GROUP BY `id`, `username`'

##### Return values

static —

#### having()

QueryBuilder.php : 343

HAVING

`public having(mixed $condition[, string $oprator = 'AND' ]) : static`

##### Parameters

$condition : mixed

  query string หรือ array

$oprator : string = 'AND'

  defaul AND

##### Return values

static —

#### insert()

QueryBuilder.php : 371

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

`public insert(string $table, mixed $datas[, array<string|int, mixed> $fields = [] ]) : static`

##### Parameters

$table : string

  ชื่อตาราง

$datas : mixed

  รูปแบบ array(key1=>value1, key2=>value2)

$fields : array<string|int, mixed> = []

  ระบุคอลัมน์ที่ต้องการ หาก $datas เป็น QueryBuilder

##### Tags

assert

  insert('user', array('id' => 1, 'name' => 'test'))->text() [==] "INSERT INTO `user` (`id`, `name`) VALUES (1, 'test')"

assert

  insert('user', array('id' => 1, 'name' => 'SQL(SELECT username FROM user WHERE id=1)'))->text() [==] "INSERT INTO `user` (`id`, `name`) VALUES (1, (SELECT username FROM user WHERE id=1))"

assert

  insert('user', array('id' => 1, 'name' => 'SQL()'))->text() [==] "INSERT INTO `user` (`id`, `name`) VALUES (1, 'SQL()')"

##### Return values

static —

#### insertOrUpdate()

QueryBuilder.php : 403

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

`public insertOrUpdate(string $table, array<string|int, mixed> $datas) : static`

##### Parameters

$table : string

  ชื่อตาราง

$datas : array<string|int, mixed>

  รูปแบบ array(key1=>value1, key2=>value2)

##### Tags

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`)"

##### Return values

static —

#### join()

QueryBuilder.php : 429

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

`public join(string|array<string|int, mixed> $table, string $type, mixed $on) : static`

##### Parameters

$table : string|array<string|int, mixed>

  ชื่อตารางที่ต้องการ join เช่น table alias หรือ (QueryBuilder, alias)

$type : string

  เข่น INNER OUTER LEFT RIGHT

$on : mixed

  query string หรือ array

##### Tags

assert

  join('user U', 'INNER', 1)->text() [==] " INNER JOIN `user` AS U ON `id` = 1"

assert

  join('user U', 'INNER', array('U.id', 'A.id'))->text() [==] " INNER JOIN `user` AS U ON U.`id` = A.`id`"

assert

  join('user U', 'INNER', array('U.id', '=', 'A.id'))->text() [==] " INNER JOIN `user` AS U ON U.`id` = A.`id`"

assert

  join('user U', 'INNER', array('id', '=', 1))->text() [==] " INNER JOIN `user` AS U ON `id` = 1"

assert

  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`"

##### Return values

static —

#### limit()

QueryBuilder.php : 452

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

`public limit(int $count, int $start) : static`

##### Parameters

$count : int

  จำนวนผลลัท์ที่ต้องการ

$start : int

  รายการเริ่มต้น

##### Tags

assert

  limit(10)->text() [==] " LIMIT 10"

assert

  limit(10, 1)->text() [==] " LIMIT 1,10"

##### Return values

static —

#### notExists()

QueryBuilder.php : 475

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

`public notExists(string $table, mixed $condition[, string $operator = 'AND' ]) : static`

##### Parameters

$table : string

  ชื่อตาราง

$condition : mixed

  query WHERE

$operator : string = 'AND'

  (optional) เช่น AND หรือ OR

##### Tags

assert

  select()->from('user U')->notExists('useronline', array('member_id', 'U.id'))->text() [==] 'SELECT * FROM `user` AS U WHERE NOT EXISTS (SELECT 1 FROM `useronline` WHERE `member_id` = U.`id`)'

assert

  select()->from('user U')->where(array('U.id', 1))->notExists('useronline', array('member_id', 'U.id'))->text() [==] 'SELECT * FROM `user` AS U WHERE U.`id` = 1 AND NOT EXISTS (SELECT 1 FROM `useronline` WHERE `member_id` = U.`id`)'

##### Return values

static —

#### order()

QueryBuilder.php : 528

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

`public order(mixed $columns) : static`

##### Parameters

$columns : mixed

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

##### Tags

assert

  order('id', 'id ASC')->text() [==] " ORDER BY `id`, `id` ASC"

assert

  order('id ASC')->text() [==] " ORDER BY `id` ASC"

assert

  order('user.id DESC')->text() [==] " ORDER BY `user`.`id` DESC"

assert

  order('id ASCD')->text() [==] ""

##### Return values

static —

#### orWhere()

QueryBuilder.php : 502

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

`public orWhere(mixed $condition[, string $oprator = 'AND' ][, string $id = 'id' ]) : static`

##### Parameters

$condition : mixed

  query string หรือ array

$oprator : string = 'AND'

  defaul AND

$id : string = 'id'

  Primary Key เช่น id (default)

##### Tags

assert

  where(array('U.id', 1))->orWhere([])->text() [==] " WHERE U.`id` = 1"

assert

  where(array('U.id', 1))->orWhere(array('U.id', 2))->text() [==] " WHERE (U.`id` = 1) OR (U.`id` = 2)"

assert

  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)"

##### Return values

static —

#### select()

QueryBuilder.php : 560

SELECT `field1`, `field2`, `field3`, .

`public select([string $fields = '*' ]) : static`

..

##### Parameters

$fields : string = '*'

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

##### Tags

assert

  select('U.id', 'email name', 'module')->text() [==] "SELECT U.`id`,`email` AS `name`,`module`"

assert

  select('"email" name', '0 id', '0 `ไอดี`')->text() [==] "SELECT 'email' AS `name`,0 AS `id`,0 AS `ไอดี`"

assert

  select("'email' name", '0 AS id', '0 AS ไอดี')->text() [==] "SELECT 'email' AS `name`,0 AS `id`,0 AS `ไอดี`"

assert

  select()->text() [==] "SELECT *"

assert

  select()->where(array('domain', Sql::strValue('kotchasan.com')))->text() [==] "SELECT * WHERE `domain` = 'kotchasan.com'"

assert

  select('name `ชื่อ นามสกุล`', 'U.`idcard` AS `เลขประชาชน`')->text() [==] "SELECT `name` AS `ชื่อ นามสกุล`,U.`idcard` AS `เลขประชาชน`"

assert

  select('table.field', '`table`.`field`')->text() [==] "SELECT `table`.`field`,`table`.`field`"

assert

  select('table.field field', '`table`.`field` `field`')->text() [==] "SELECT `table`.`field` AS `field`,`table`.`field` AS `field`"

assert

  select('table.field AS field', '`table`.`field` AS `field`')->text() [==] "SELECT `table`.`field` AS `field`,`table`.`field` AS `field`"

assert

  select('U.field', 'U1.`field`', 'NULL id')->text() [==] "SELECT U.`field`,U1.`field`,NULL AS `id`"

assert

  select('U.field field', 'U1.`field` `field`')->text() [==] "SELECT U.`field` AS `field`,U1.`field` AS `field`"

assert

  select('U.field AS field', 'U1.`field` AS `field`')->text() [==] "SELECT U.`field` AS `field`,U1.`field` AS `field`"

assert

  select(Sql::YEAR('create_date', 'year'), Sql::MONTH('create_date', 'month'))->text() [==] "SELECT YEAR(`create_date`) AS `year`,MONTH(`create_date`) AS `month`"

assert

  select(array(Sql::YEAR('create_date', 'year'), Sql::MONTH('create_date', 'month')))->text() [==] "SELECT YEAR(`create_date`) AS `year`,MONTH(`create_date`) AS `month`"

##### Return values

static —

#### selectCount()

QueryBuilder.php : 590

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

`public selectCount([mixed $fileds = '* count' ]) : static`

##### Parameters

$fileds : mixed = '* count'

  (option) 'field alias'

##### Tags

assert

  selectCount()->from('user')->text() [==] "SELECT COUNT(*) AS `count` FROM `user`"

assert

  selectCount('id ids')->from('user')->text() [==] "SELECT COUNT(`id`) AS `ids` FROM `user`"

assert

  selectCount('id ids', 'field alias')->from('user')->text() [==] "SELECT COUNT(`id`) AS `ids`, COUNT(`field`) AS `alias` FROM `user`"

##### Return values

static —

#### selectDistinct()

QueryBuilder.php : 615

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

`public selectDistinct([string $fields = '*' ]) : static`

..

##### Parameters

$fields : string = '*'

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

##### Tags

assert

  selectDistinct('id')->from('user')->text() [==] "SELECT DISTINCT `id` FROM `user`"

##### Return values

static —

#### set()

QueryBuilder.php : 641

UPDATE ..... SET

`public set(array<string|int, mixed>|string $datas) : static`

##### Parameters

$datas : array<string|int, mixed>|string

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

##### Tags

assert

  update('user')->set(array('key1' => 'value1', 'key2' => 2))->where(1)->text() [==] "UPDATE `user` SET `key1`=:Skey1, `key2`=:Skey2 WHERE `id` = 1"

assert

  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"

assert

  update('user')->set(array('key1' => '(...)'))->text() [==] "UPDATE `user` SET `key1`=(...)"

assert

  update('user')->set(array('key1' => 'test (...)'))->text() [==] "UPDATE `user` SET `key1`=:Skey1"

assert

  update('user')->set('`reply`=`reply`+1')->text() [==] "UPDATE `user` SET `reply`=`reply`+1"

assert

  update('user')->set(array('id' => 1, '`reply`=`reply`+1'))->text() [==] "UPDATE `user` SET `id`=:Sid, `reply`=`reply`+1"

assert

  update('user')->set(array('create_date' => Sql::NOW()))->text() [==] "UPDATE `user` SET `create_date`=NOW()"

assert

  update('user')->set(array('create_date' => Sql::create('SELECT * FROM `a`')))->text() [==] "UPDATE `user` SET `create_date`=SELECT * FROM `a`"

assert

  update('user')->set(array('create_date' => 'U.id'))->text() [==] "UPDATE `user` SET `create_date`=U.`id`"

assert

  update('user')->set(array('create_date' => '111.11'))->text() [==] "UPDATE `user` SET `create_date`=:Screatedate"

assert

  update('user')->set(array('create_date' => 'user.user'))->text() [==] "UPDATE `user` SET `create_date`=:Screatedate"

##### Return values

static —

#### text()

Query.php : 83

ฟังก์ชั่นสร้างคำสั่ง SQL เป็นข้อความ

`public text() : string`

##### Return values

string —

#### toArray()

QueryBuilder.php : 681

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

`public toArray() : static`

##### Return values

static —

#### union()

QueryBuilder.php : 697

UNION

`public union(array<string|int, mixed> $querys) : static`

##### Parameters

$querys : array<string|int, mixed>

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

##### Tags

assert

  (Sql::create('SELECT * FROM `a`'), Sql::create('SELECT * FROM `b`'))->text() [==] "(SELECT * FROM `a`) UNION (SELECT * FROM `b`)"

assert

  (array(Sql::create('SELECT * FROM `a`'), Sql::create('SELECT * FROM `b`')))->text() [==] "(SELECT * FROM `a`) UNION (SELECT * FROM `b`)"

##### Return values

static —

#### unionAll()

QueryBuilder.php : 724

UNION ALL

`public unionAll(array<string|int, mixed> $querys) : static`

##### Parameters

$querys : array<string|int, mixed>

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

##### Tags

assert

  (Sql::create('SELECT * FROM `a`'), Sql::create('SELECT * FROM `b`'))->text() [==] "(SELECT * FROM `a`) UNION ALL (SELECT * FROM `b`)"

assert

  (array(Sql::create('SELECT * FROM `a`'), Sql::create('SELECT * FROM `b`')))->text() [==] "(SELECT * FROM `a`) UNION ALL (SELECT * FROM `b`)"

##### Return values

static —

#### update()

QueryBuilder.php : 750

UPDATE

`public update(string $table) : static`

##### Parameters

$table : string

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

##### Tags

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)"

##### Return values

static —

#### where()

QueryBuilder.php : 808

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

`public where(mixed $condition[, string $oprator = 'AND' ][, string $id = 'id' ]) : static`

##### Parameters

$condition : mixed

  query string หรือ array

$oprator : string = 'AND'

  defaul AND

$id : string = 'id'

  Primary Key เช่น id (default)

##### Tags

assert

  where([])->text() [==] ""

assert

  where(1)->text() [==] " WHERE `id` = 1"

assert

  where(array('id', 1))->text() [==] " WHERE `id` = 1"

assert

  where(array('id', '1'))->text() [==] " WHERE `id` = '1'"

assert

  where(array('domain', 'domain.tld'))->text() [==] " WHERE `domain` = 'domain.tld'"

assert

  where(array(1, 1))->text() [==] " WHERE 1 = 1"

assert

  where(array('U.id', 'G.id'))->text() [==] " WHERE U.`id` = G.`id`"

assert

  where(array('date', '2016-1-1 30:30'))->text() [==] " WHERE `date` = '2016-1-1 30:30'"

assert

  where(array('id', '=', 1))->text() [==] " WHERE `id` = 1"

assert

  where(Sql::create('`id`=1 OR (SELECT ....)'))->text() [==] " WHERE `id`=1 OR (SELECT ....)"

assert

  where(array('id', '=', 1))->text() [==] " WHERE `id` = 1"

assert

  where(array('id', 'IN', array(1, 2, '3')))->text() [==] " WHERE `id` IN (1, 2, '3')"

assert

  where(array(array('social', '0'), Sql::create('(...)')))->text() [==] " WHERE (`social` = '0' AND (...))"

assert

  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)"

assert

  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`))"

assert

  where(array(array('id', array(1, 'a')), array('id', array('', 'th'))))->text() [==] " WHERE (`id` IN (1, 'a') AND `id` IN ('', 'th'))"

assert

  where(array('ip', 'NOT IN', array('', '192.168.1.104')))->text() [==] " WHERE `ip` NOT IN ('', '192.168.1.104')"

assert

  where(array('U.id', '(SELECT CASE END)'))->text() [==] " WHERE U.`id` = '(SELECT CASE END)'"

assert

  where(array(array(Sql::YEAR('create_date'), Sql::YEAR('S.`create_date`'))))->text() [==] " WHERE YEAR(`create_date`) = YEAR(S.`create_date`)"

assert

  where(array('U.id', Sql::strValue('G.id')))->text() [==] " WHERE U.`id` = 'G.id'"

assert

  where(Sql::ISNULL('U.id'))->text() [==] " WHERE U.`id` IS NULL"

assert

  where(array(array('create_date', 'A'), Sql::BETWEEN('id', 'ทดสอบ', 'ทดสอบ')))->text() [==] " WHERE (`create_date` = 'A' AND `id` BETWEEN 'ทดสอบ' AND 'ทดสอบ')"

assert

  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)"

assert

  where(array(array('username', NULL), array('username', '=', NULL), array('username', '!=', NULL)))->text() [==] " WHERE (`username` IS NULL AND `username` IS NULL AND `username` IS NOT NULL)"

##### Return values

static —

#### aliasName()

Query.php : 103

ฟังก์ชั่นสร้างคีย์ สำหรับการ execute

`protected aliasName(string $name[, string $prefix = '' ]) : string`

##### Parameters

$name : string

  ชื่อฟิลด์

$prefix : string = ''

  คำนำหน้าชื่อฟิลด์ ใช้เพื่อป้องกันการใช้ตัวแปรซ้ำ

##### Return values

string —

#### buildGroup()

Query.php : 115

สร้าง query สำหรับ GROUP BY

`protected buildGroup(array<string|int, mixed>|string $fields) : string`

##### Parameters

$fields : array<string|int, mixed>|string

  array('U.id', 'U.username') หรือ string U.id

##### Return values

string —

#### buildJoin()

Query.php : 134

สร้างคำสั่ง JOIN ถ้าไม่มี alias คืนค่าว่าง

`protected buildJoin(string|array<string|int, mixed> $table, string $type, mixed $on) : string`

##### Parameters

$table : string|array<string|int, mixed>

  ชื่อตารางต้องมี alias ด้วย หรือ (QueryBuilder, alias)

$type : string

  เข่น INNER OUTER LEFT RIGHT

$on : mixed

  query string หรือ array

##### Return values

string —

#### buildOrder()

Query.php : 161

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

`protected buildOrder(array<string|int, mixed>|string $fields) : string`

##### Parameters

$fields : array<string|int, mixed>|string

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

##### Return values

string —

#### buildSelect()

Query.php : 193

ฟังก์ชั่นสร้าง query string สำหรับคำสั่ง SELECT

`protected buildSelect(string|array<string|int, mixed>|QueryBuilder $fields, mixed $alias) : string`

##### Parameters

$fields : string|array<string|int, mixed>|QueryBuilder
$alias : mixed

##### Return values

string —

#### buildValue()

Query.php : 260

แปลงข้อมูลรูปแบบ SQL รูปแบบ array('field1', 'condition', 'field2') ไม่ระบุ condition หมายถึง = หรือ IN

`protected buildValue(array<string|int, mixed> $params) : string`

##### Parameters

$params : array<string|int, mixed>

##### Return values

string —

#### buildWhere()

Query.php : 314

ฟังก์ชั่นสร้างคำสั่ง WHERE คืนค่า string สำหรับคำสั่ง WHERE หรือคืนค่า array(where, values) สำหรับใช้กับการ bind

`protected buildWhere(mixed $condition[, string $operator = 'AND' ][, string $id = 'id' ]) : string|array<string|int, mixed>`

##### Parameters

$condition : mixed
$operator : string = 'AND'

  (optional) เช่น AND หรือ OR

$id : string = 'id'

  (optional )ชื่อฟิลด์ที่เป็น key

##### Return values

string|array<string|int, mixed> —

#### buildWhereValues()

Query.php : 374

ฟังก์ชั่นสร้างคำสั่ง WHERE และ values ไม่ใส่ alias ให้กับชื่อฟิลด์ คืนค่า ($condition, $values)

`protected buildWhereValues(mixed $condition[, string $operator = 'AND' ][, string $id = 'id' ]) : array<string|int, mixed>`

##### Parameters

$condition : mixed
$operator : string = 'AND'

  (optional) เช่น AND หรือ OR

$id : string = 'id'

  (optional )ชื่อฟิลด์ที่เป็น key

##### Return values

array<string|int, mixed> —

#### fieldName()

Query.php : 424

แปลงข้อความสำหรับชื่อฟิลด์หรือชื่อตาราง

`protected fieldName(string $name) : string`

##### Parameters

$name : string

##### Return values

string —

#### fieldValue()

Query.php : 471

แปลงข้อความสำหรับ value

`protected fieldValue(string $value) : string`

##### Parameters

$value : string

##### Return values

string —

#### groupAnd()

Query.php : 496

ฟังก์ชั่นสำหรับจัดกลุ่มคำสั่ง และ เชื่อมแต่ละกลุ่มด้วย AND

`protected groupAnd(array<string|int, mixed> $params) : Sql`

##### Parameters

$params : array<string|int, mixed>

  คำสั่ง รูปแบบ array('field1', 'condition', 'field2')

##### Return values

Sql —

#### groupOr()

Query.php : 515

ฟังก์ชั่นสำหรับจัดกลุ่มคำสั่ง และ เชื่อมแต่ละกลุ่มด้วย OR

`protected groupOr(array<string|int, mixed> $params) : Sql`

##### Parameters

$params : array<string|int, mixed>

  คำสั่ง รูปแบบ array('field1', 'condition', 'field2')

##### Return values

Sql —

#### quoteTableName()

Query.php : 534

ฟังก์ชั่นอ่านชื่อตารางและชื่อรอง และใส่ ` ครอบชื่อตารางด้วย

`protected quoteTableName(string $table) : string`

##### Parameters

$table : string

  ชื่อตารางตามที่กำหนดใน settings/datasbase.php

##### Return values

string —

#### whereValue()

Query.php : 560

สร้างคำสั่ง WHERE

`private whereValue(array<string|int, mixed> $params[, int|null $i = null ]) : array<string|int, mixed>|string`

##### Parameters

$params : array<string|int, mixed>
$i : int|null = null

##### Return values

array<string|int, mixed>|string —

## Search results