Skip to content

Framyomyim/queryx-lite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QueryX LiteDatabase

เป็นฐานข้อมูลที่พื้นฐานในรูปแบบ NoSQL โดยมีชื่อว่า LiteDatabase ในขณะนี้อยู่ในช่วงพัฒนาเวอร์ชั่น 1 โดยในอนาคตจะถูกรวมเข้ากับ QueryX Framework อย่างแน่นอน ในเวอร์ชั่นนี้จะยังไม่ถูกนำไปใช้เนื่องจากยังไม่มีระบบล็อกอินเพื่อดูฐานข้อมูล จึงไม่แนะนำให้นำไปใช้กับงานจริง แต่สามารถนำไปต่อยอดหรือศึกษาการใช้งานคร่าว ๆ ก่อนที่จะปล่อยเวอร์ชั่นหลักได้

วิธีการใช้งานเบื้องต้น

<?php
  use QueryX\Common\LiteDatabase;
  require_once __DIR__ . '/path/QueryxLite.php';
  
  $db = new LiteDatabase;
  $db->set('collectionDir', 'path/for/keep/collection/files/'); // ต้องลงท้ายด้วย "/"
  $db->set('configFile', 'path/for/keep/config/fileName'); // ไม่ต้องใส่นามสกุลไฟล์
?>

จากโค๊ดข้างบน $db->set('collectionDir', 'path/for/keep/collection/files/') หมายถึงโฟลเดอร์ที่จะทำการเก็บข้อมูลหรือใช้เก็บฐานข้อมูล และ $db->set('configFile', 'path/for/keep/config/fileName') หมายถึงที่อยู่ของไฟล์ Username และ Password (ในขณะนี้ยังไม่มีฟังก์ชั่นเข้าสู่ระบบ สามารถข้ามไปได้)

เมธอดต่างๆ

เมธอดสร้างไฟล์ Config | createConfig($username, $password)

ก่อนจะใช้งานเมธอดนี้ จำเป็นที่จะต้องกำหนดที่อยู่ของไฟล์โดยใช้เมธอด $db->set('configFile', 'path') เสียก่อน

$db->createConfig('username', 'password');

เมธอดสร้าง Collection | createCollection($collectionName)

ก่อนจะใช้งานเมธอดนี้ จำเป็นที่จะต้องกำหนดที่อยู่ของคอลเล็คชั่นโดยใช้เมธอด $db->set('collectionDir', 'path') เสียก่อน

$db->createCollection('collectionName');

เมธอดดูการตั้งค่าต่างๆ (ไม่รวม Username และ Password) | getConfig($encoded = true)

เมธอดนี้ถ้าหากกำหนด Argument เป็น true (ซึ่งเป็นค่าเริ่มต้น) จะส่งค่าที่ถูกการเข้ารหัสไว้ แต่ถ้าหากใส่เป็น false จะได้ออกมาเป็นค่า Array

$db->getConfig(true or false);

เมธอดเข้าถึงคอลเล็คชั่น | collection($collectionName)

เป็นเมธอดที่จะเข้าถึงคอลเล็คชั่นต่างๆที่มีอยู่ในระบบ โดยจะคืนค่ามาเป็น Instance ของคลาสทำให้เราสามารถเรียกใช้เมธอดอื่นๆภายในคลาสต่อได้เลย

$db->collection('collect')->otherMethods();

เมธอดลบคอลเล็คชั่นและด็อคคิวเมนท์ | deleteThis()

โดยเมธอด deleteThis() จะสามารถลบได้ทั้ง document และ collection ขึ้นอยู่กับการใช้งาน โดยให้ดูจากตัวอย่าง

$db->collection('collect')->deleteThis(); // เป็นการลบคอลเล็คชั่น
$db->collection('collect')->document('doc')->deleteThis(); // เป็นการลบด็อคคิวเมนท์

เมธอดอ่านข้อมูลทั้งหมดในคอลเล็คชั่น | collection($collectionName)->readAll()

ก่อนที่จะใช้งานเมธอดนี้ จำเป็นที่จะต้องเข้าถึงคอลเล็คชั่นเสียก่อน โดยจะคืนค่าออกมาเป็น Array

print_r($db->collection('collect')->readAll());

เมธอดเข้าถึงด็อคคิวเมนท์และเมธอดสำหรับจัดการด็อคคิวเมนท์ | collection($collectionName)->document($documentName)

เมื่อเราเข้าถึง document ได้แล้ว เมธอดจะคืนค่า Instance ของคลาสออกมาทำให้เราสามารถใช้งานฟังก์ชั่นที่เกี่ยวกับด็อคคิวเมนท์ได้ต่อทันที

$db->collection('collect')->document('doc')->update(['age' => 8]); // แก้ไขข้อมูล
$db->collection('collect')->document('doc')->read(); // อ่านข้อมูล

เมธอดจำกัดข้อมูลหรือจำกัดด็อคคิวเมนท์ | collection($collectionName)->limit($limit)

ถ้าหากต้องการกำหนดให้ไม่จำกัดให้ใส่ค่าเป็น -1 (โดยค่าปกติก็คือ -1)

$db->collection('collect')->limit(5)->readAll();

เมธอดสำหรับเลือกเฉพาะด็อคคิวเมนท์ที่มีคุณสมบัติผ่านเงื่อนไข | collection($collectionName)->where($key, $operator, $value)

ถ้ามีการใช้เมธอด where() เราจะใช้เมธอด get() เพื่อนำข้อมูลออกมาแสดง โดยจะคืนค่าออกมาเป็น Array

$db->collection('collect')->where('key', '==', 'value')->where('key2', '==', 'value2')->get();

ตัวอย่างการใช้งาน limit , where ร่วมกัน

<?php
  use QueryX\Common\LiteDatabase;
  require_once __DIR__ . '/path/QueryxLite.php';
  
  $db = new LiteDatabase;
  $db->set('collectionDir', 'path/for/keep/collection/files/'); // ต้องลงท้ายด้วย "/"
  // ยังไม่จำเป็นในขณะนี้ $db->set('configFile', 'path/for/keep/config/fileName');
  
  $usersActive = $db->collection('users')
                    ->limit(5)
                    ->where('active', '==', true)
                    ->get();
  
  foreach($usersActive as $user) {
    echo $user['name'] . '<br/>';
  }
?>

สำหรับการ Order จะถูกเพิ่มเข้ามาในเวอร์ชั่นถัดไป

ในตอนนี้ยังวางแผนการทำงานได้ไม่ดีเท่าที่ควร ในเวอร์ชั่นหลักจะทำให้ครบถ้วนทุกฟังก์ชั่นเลยจ้า

About

QueryX - Lite Database - Tiny and Fast

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages