Kotchasan Framework Documentation

Kotchasan Framework Documentation

Database Class

TH 05 Feb 2026 06:23

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