Kotchasan Framework Documentation

Kotchasan Framework Documentation

Result System Overview

TH 05 Feb 2026 06:23

Result System Overview

Result classes ใช้สำหรับจัดการผลลัพธ์จาก query รองรับทั้ง PDO และ array-based results

โครงสร้าง

Result/
├── ResultInterface.php    # Interface สำหรับ result ทุกประเภท
├── PDOResult.php          # สำหรับ PDO queries (default)
└── ArrayResult.php        # สำหรับ cached results

ResultInterface

Interface หลักที่ result ทุกประเภทต้อง implement

Methods

Method Return Description
fetch() object\|array\|null ดึงแถวถัดไป
fetchAll() array ดึงทุกแถว
fetchColumn($col) mixed ดึง column เดียว
rowCount() int จำนวนแถวที่ affected
columnCount() int จำนวน columns
getColumnMeta($col) array metadata ของ column
getResult() mixed underlying result object
isEmpty() bool ตรวจสอบว่าว่างหรือไม่
hasMore() bool มีแถวเหลืออีกหรือไม่
reset() bool รีเซ็ต pointer
close() bool ปิด cursor
count() int จำนวนแถว (alias ของ rowCount)

การใช้งาน

fetch() - ดึงทีละแถว

$result = $db->select('*')->from('user')->execute();

while ($row = $result->fetch()) {
    echo $row->name;
}

fetchAll() - ดึงทั้งหมด

$result = $db->select('*')->from('user')->execute();
$users = $result->fetchAll();

foreach ($users as $user) {
    echo $user->name;
}

fetchColumn() - ดึง column เดียว

$result = $db->select('COUNT(*)')->from('user')->execute();
$count = $result->fetchColumn();

rowCount() - จำนวนแถวที่ affected

$result = $db->update('user')
    ->set(['status' => 0])
    ->where([['active', 0]])
    ->execute();

echo "Updated: " . $result->rowCount() . " rows";

isEmpty() / hasMore()

$result = $db->select('*')->from('user')->execute();

if ($result->isEmpty()) {
    echo "No users found";
}

while ($result->hasMore()) {
    $user = $result->fetch();
    // process
}

reset() - รีเซ็ต pointer

$result = $db->select('*')->from('user')->execute();

// อ่านครั้งแรก
$users = $result->fetchAll();

// รีเซ็ตแล้วอ่านใหม่
$result->reset();
$usersAgain = $result->fetchAll();

PDOResult

Implementation สำหรับ PDO (default)

use Kotchasan\Result\PDOResult;

// สร้างจาก PDOStatement
$result = new PDOResult($statement);
$result = new PDOResult($statement, 'array');  // return arrays instead of objects

Result Format

  • 'default' หรือ 'object' - ดึงเป็น object (default)
  • 'array' - ดึงเป็น associative array
// Object format (default)
$row = $result->fetch();
echo $row->name;

// Array format
$result = new PDOResult($statement, 'array');
$row = $result->fetch();
echo $row['name'];

ArrayResult

Implementation สำหรับ cached results

use Kotchasan\Result\ArrayResult;

// สร้างจาก array
$data = [
    ['id' => 1, 'name' => 'John'],
    ['id' => 2, 'name' => 'Jane']
];

$result = new ArrayResult($data);
$result = new ArrayResult($data, 'object');  // return objects

Additional Methods

Method Return Description
first() mixed ดึงแถวแรก
all() array ดึงทั้งหมด (ไม่เลื่อน pointer)
getData() array ดึง raw data array
getResultFormat() string ดึง result format

Iterator Support

ArrayResult รองรับ foreach:

$result = new ArrayResult($data);

foreach ($result as $row) {
    echo $row['name'];
}

คลาสที่เกี่ยวข้อง