Kotchasan Framework Documentation
Database Class
Database Class
\Kotchasan\Database คือคลาสหลักสำหรับการเชื่อมต่อและจัดการฐานข้อมูล ใช้งานภายใน DB และ Model
การสร้าง Instance
$db = \Kotchasan\Database::create();
// เชื่อมต่อ connection อื่น
$db2 = \Kotchasan\Database::create('secondary');การตั้งค่า
จาก settings/database.php
// settings/database.php
return [
'default' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'myapp',
'username' => 'root',
'password' => '',
'prefix' => 'app',
'charset' => 'utf8mb4'
]
];ตั้งค่าผ่านโค้ด
\Kotchasan\Database::config([
'default' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'myapp',
'username' => 'root',
'password' => '',
'prefix' => 'app'
]
]);เมธอดสำหรับ Query
select() - สร้าง SELECT query
$db = \Kotchasan\Database::create();
$users = $db->select('id', 'name', 'email')
->from('user')
->where(['status', 1])
->fetchAll();createQuery() - สร้าง QueryBuilder
$db = \Kotchasan\Database::create();
$query = $db->createQuery()
->select('*')
->from('user');first() - ดึงแถวแรก
$db = \Kotchasan\Database::create();
$user = $db->first('user');
$user = $db->first('user', ['id', 'name']);all() - ดึงข้อมูลทั้งหมด
$db = \Kotchasan\Database::create();
$users = $db->all('user');
$users = $db->all('user', ['id', 'name']);get() - ดึงข้อมูลตามเงื่อนไข
$db = \Kotchasan\Database::create();
$activeUsers = $db->get('user', ['status' => 1], ['id', 'name']);selectRaw() - SELECT แบบ raw SQL
$db = \Kotchasan\Database::create();
$result = $db->selectRaw('COUNT(*) as total, DATE(created_at) as date')
->from('orders')
->groupBy('date')
->fetchAll();insert() / update() / delete()
$db = \Kotchasan\Database::create();
// Insert
$db->insert('user')
->values(['name' => 'John', 'email' => 'john@example.com'])
->execute();
// Update
$db->update('user')
->set(['name' => 'Jane'])
->where(['id', 1])
->execute();
// Delete
$db->delete('user')
->where(['id', 1])
->execute();raw() - รัน SQL โดยตรง
$db = \Kotchasan\Database::create();
$table = $db->getTableName('user');
$result = $db->raw(
"SELECT * FROM `{$table}` WHERE status = ?",
[1]
);Transaction
แบบ Manual
$db = \Kotchasan\Database::create();
$db->beginTransaction();
try {
$db->insert('orders')->values($order)->execute();
$db->insert('order_items')->values($items)->execute();
$db->commit();
} catch (\Exception $e) {
$db->rollback();
throw $e;
}แบบ Callback (แนะนำ)
$db = \Kotchasan\Database::create();
$result = $db->transaction(function ($db) use ($order, $items) {
$db->insert('orders')->values($order)->execute();
$orderId = $db->lastInsertId();
foreach ($items as $item) {
$item['order_id'] = $orderId;
$db->insert('order_items')->values($item)->execute();
}
return $orderId;
});การจัดการ Connection
connection() - สลับ connection
$db = \Kotchasan\Database::create();
$users = $db->all('user');
$logs = $db->connection('logs')->all('access_log');getConnection() - ดึง connection instance
$connection = \Kotchasan\Database::getConnection('default');Debugging & Logging
getLastQuery() - ดู query ล่าสุด
$db = \Kotchasan\Database::create();
$db->all('user');
echo $db->getLastQuery();getLastError() - ดู error ล่าสุด
$db = \Kotchasan\Database::create();
try {
$db->raw('INVALID SQL');
} catch (\Exception $e) {
echo $db->getLastError();
}setLogger() - ตั้งค่า Logger
use Kotchasan\Logger\FileLogger;
$logger = new FileLogger(ROOT_PATH.'datas/logs/');
\Kotchasan\Database::setLogger($logger);createQueryLogger() - สร้าง Query Logger
use Kotchasan\Logger\FileLogger;
$logger = new FileLogger(ROOT_PATH.'datas/logs/');
$queryLogger = \Kotchasan\Database::createQueryLogger($logger);Cache
configureCache() - ตั้งค่า Query Cache
\Kotchasan\Database::configureCache([
'driver' => 'file',
'path' => ROOT_PATH.'datas/cache/'
], 3600);setCache() - ตั้งค่า Cache Instance
use Kotchasan\Cache\FileCache;
$cache = new FileCache(ROOT_PATH.'datas/cache/');
\Kotchasan\Database::setCache($cache, 3600);ยูทิลิตีที่ใช้บ่อย
getTableName() - ดึงชื่อตารางพร้อม prefix
$db = \Kotchasan\Database::create();
$tableName = $db->getTableName('user');getPrefix() - ดึง prefix ของตาราง
$db = \Kotchasan\Database::create();
$prefix = $db->getPrefix();emptyTable() - ล้างตาราง
$db = \Kotchasan\Database::create();
$db->emptyTable('cache');optimizeTable() - ปรับปรุงประสิทธิภาพตาราง
$db = \Kotchasan\Database::create();
$db->optimizeTable('user');lastInsertId() - ดึง ID ล่าสุด
$db = \Kotchasan\Database::create();
$db->insert('user')->values([...])->execute();
$id = $db->lastInsertId();สรุปเมธอด
Static Methods
| Method | Description | Return |
|---|---|---|
create($connectionName = 'default') |
สร้าง instance | Database |
config($config) |
ตั้งค่า connection | void |
configureCache($config, $ttl) |
ตั้งค่า cache | QueryCache |
setCache($cache, $ttl) |
ตั้งค่า cache instance | QueryCache |
setLogger($logger) |
ตั้งค่า logger | void |
getLogger() |
ดึง logger | LoggerInterface\|null |
getConnection($name) |
ดึง connection | ConnectionInterface\|null |
getQueryCache() |
ดึง query cache | QueryCache\|null |
createQueryLogger($logger) |
สร้าง query logger | QueryLogger |
Instance Methods
| Method | Description | Return |
|---|---|---|
select($columns) |
สร้าง SELECT query | QueryBuilderInterface |
createQuery() |
สร้าง QueryBuilder | QueryBuilderInterface |
first($table, $columns) |
ดึงแถวแรก | mixed |
all($table, $columns) |
ดึงข้อมูลทั้งหมด | array |
get($table, $where, $columns) |
ดึงข้อมูลตามเงื่อนไข | array |
selectRaw($expr, $bindings) |
SELECT แบบ raw | QueryBuilderInterface |
insert($table) |
สร้าง INSERT query | QueryBuilderInterface |
update($table) |
สร้าง UPDATE query | QueryBuilderInterface |
delete($table) |
สร้าง DELETE query | QueryBuilderInterface |
raw($sql, $params) |
รัน raw SQL | ResultInterface |
beginTransaction() |
เริ่ม transaction | bool |
commit() |
ยืนยัน transaction | bool |
rollback() |
ยกเลิก transaction | bool |
transaction($callback) |
รัน callback ใน transaction | mixed |
lastInsertId($name) |
ดึง ID ล่าสุด | string |
getLastQuery() |
ดึง query ล่าสุด | string\|null |
getLastError() |
ดึง error ล่าสุด | string\|null |
connection($name) |
สลับ connection | Database |
getTableName($table) |
ดึงชื่อตารางพร้อม prefix | string |
getPrefix() |
ดึง prefix | string |
emptyTable($table, $options) |
ล้างตาราง | bool |
optimizeTable($table) |
ปรับปรุงตาราง | bool |
คลาสที่เกี่ยวข้อง
- DB - Utility สำหรับ CRUD แบบง่าย
- Model - Base Model
- QueryBuilder - เครื่องมือสร้าง query