Kotchasan Framework Documentation
Result System Overview
Result System Overview
Result classes ใช้สำหรับจัดการผลลัพธ์จาก query รองรับทั้ง PDO และ array-based results
โครงสร้าง
Result/
├── ResultInterface.php # Interface สำหรับ result ทุกประเภท
├── PDOResult.php # สำหรับ PDO queries (default)
└── ArrayResult.php # สำหรับ cached resultsResultInterface
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 objectsResult 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 objectsAdditional 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'];
}คลาสที่เกี่ยวข้อง
- Database - Core database class
- QueryBuilder - Query building