FluentPDO เป็นตัวสร้างคิวรี PHP SQL โดยใช้ PDO เป็นไลบรารีที่รวดเร็วและไม่ซับซ้อนซึ่งมีตัวสร้างการรวมอัจฉริยะ ซึ่งจะสร้างการรวมตารางให้คุณโดยอัตโนมัติ
อินเทอร์เฟซที่ใช้งานง่ายสำหรับการสร้างแบบสอบถามที่มีประสิทธิภาพ
รองรับฐานข้อมูลใด ๆ ที่เข้ากันได้กับ PDO
ความสามารถในการสร้างแบบสอบถาม SELECT, INSERT, UPDATE & DELETE ที่ซับซ้อนด้วยโค้ดเพียงเล็กน้อย
พิมพ์คำใบ้สำหรับวิธีการวิเศษด้วยการเติมโค้ดให้สมบูรณ์ใน IDE อัจฉริยะ
การเปิดตัว FluentPDO ที่เสถียรและได้รับการบำรุงรักษาอย่างแข็งขัน รองรับ PHP 7.3 ถึง PHP 8.0 อย่างเป็นทางการ แต่สามารถทำงานร่วมกับ PHP 7 เวอร์ชันก่อนหน้าได้
FluentPDO รุ่นดั้งเดิม ไม่ได้รับการสนับสนุนอีกต่อไปและจะไม่ได้รับการบำรุงรักษาหรืออัปเดต เวอร์ชันนี้ใช้งานได้กับ PHP 5.4 ถึง 7.1
เวอร์ชันนี้เป็นการเขียน Fluent ใหม่ทั้งหมดตั้งแต่ต้นจนจบ ข้อได้เปรียบหลักคือการใช้หน่วยความจำน้อยลงอย่างมาก และประสิทธิภาพในการสร้างคิวรีที่สูงกว่ามาก นอกจากนี้ยังมีข้อจำกัดเพิ่มเติมบางประการเพื่อให้ข้อความค้นหาอ่านและบำรุงรักษาได้ง่ายขึ้น การจัดทำเอกสารยังเป็นคำขอที่พบบ่อยมากและเวอร์ชัน 3 ได้รับการจัดทำเอกสารอย่างครบถ้วนควบคู่ไปกับการพัฒนา รายละเอียดและตัวชี้วัดจะถูกโพสต์เมื่อมีข้อมูล
Sitepoint - เริ่มต้นใช้งาน FluentPDO
วิธีที่แนะนำในการติดตั้ง FluentPDO คือผ่านทางผู้แต่ง
เพิ่มบรรทัดต่อไปนี้ในไฟล์ composer.json
ของคุณ:
"require": { ... "envms/fluentpdo": "^2.2.0" }
อัปเดตการอ้างอิงของคุณด้วย composer update
และคุณทำเสร็จแล้ว!
หากคุณไม่ต้องการใช้ผู้แต่ง ให้ดาวน์โหลดรุ่นล่าสุด สร้างไดเร็กทอรี Envms/FluentPDO
ในไดเร็กทอรีไลบรารีของคุณ และวางที่เก็บนี้ลงไป สุดท้ายเพิ่ม:
ต้องการ '[lib-dir]/Envms/FluentPDO/src/Query.php';
ไปที่ด้านบนของใบสมัครของคุณ หมายเหตุ: คุณจะต้องมีตัวโหลดอัตโนมัติเพื่อใช้ FluentPDO โดยไม่ต้องเปลี่ยนซอร์สโค้ด
สร้างอินสแตนซ์ PDO ใหม่ และส่งอินสแตนซ์ไปยัง FluentPDO:
$pdo = new PDO('mysql:dbname=fluentdb', 'user', 'password');$fluent = EnvmsFluentPDOQuery ใหม่($pdo);
จากนั้น การสร้างแบบสอบถามก็ทำได้ง่ายและรวดเร็ว:
$query = $fluent->จาก('ความคิดเห็น') ->ที่ไหน('article.published_at > ?', $date) ->orderBy('published_at DESC') ->ขีดจำกัด(5);
ซึ่งจะสร้างแบบสอบถามด้านล่าง:
SELECT comment.*จาก commentLEFT JOIN บทความบน article.id = comment.article_idWHERE article.published_at > ?ORDER BY article.published_at DESCLIMIT 5
ในการรับข้อมูลจากการเลือก สิ่งที่เราทำคือวนซ้ำอาร์เรย์ที่ส่งคืน:
foreach ($สอบถามเป็น $row) {echo "$row['title']n"; -
มาเริ่มด้วยการเข้าร่วมแบบดั้งเดิมด้านล่าง:
$query = $fluent->จาก('บทความ') ->leftJoin('ผู้ใช้บน user.id = article.user_id') ->select('user.name');
มันค่อนข้างละเอียดและไม่ฉลาดมาก หากตารางของคุณใช้ชื่อคีย์หลักและคีย์ต่างประเทศที่เหมาะสม คุณสามารถย่อชื่อด้านบนให้สั้นลงได้:
$query = $fluent->จาก('บทความ') ->leftJoin('ผู้ใช้') ->select('user.name');
นั่นดีกว่าแต่ไม่เหมาะ อย่างไรก็ตาม มันจะง่ายกว่าถ้า ไม่เขียนการรวมใดๆ :
$query = $fluent->จาก('บทความ') ->select('user.name');
เจ๋งใช่มั้ย? FluentPDO สามารถสร้างการรวมให้คุณได้ โดยคุณเพิ่มชื่อตารางต่างประเทศไว้ข้างหน้าคอลัมน์ที่ร้องขอ
ตัวอย่างข้อมูลทั้งสามด้านบนจะสร้างข้อความค้นหาเดียวกันทุกประการ:
เลือกบทความ * ชื่อผู้ใช้ จากบทความ ผู้ใช้ซ้ายเข้าร่วมบน user.id = article.user_id
ท้ายที่สุด เป็นความคิดที่ดีที่จะปล่อยทรัพยากรทันทีที่ทำหน้าที่ของตนเสร็จสิ้น:
$คล่องแคล่ว->ปิด();
$query = $fluent->from('article')->where('id', 1)->fetch();$query = $fluent->from('user', 1)->fetch(); // เวอร์ชันที่สั้นกว่าหากเลือกหนึ่งแถวด้วยคีย์หลัก
$values = array('title' => 'article 1', 'content' => 'content 1');$query = $fluent->insertInto('article')->values($values)->execute( );$query = $fluent->insertInto('article', $values)->execute(); // เวอร์ชันสั้นกว่า
$set = array('published_at' => new FluentLiteral('NOW()'));$query = $fluent->update('article')->set($set)->where('id', 1 )->execute();$query = $fluent->update('article', $set, 1)->execute(); // เวอร์ชันที่สั้นลงหากอัปเดตหนึ่งแถวด้วยคีย์หลัก
$query = $fluent->deleteFrom('article')->where('id', 1)->execute();$query = $fluent->deleteFrom('article', 1)->execute(); // เวอร์ชันที่สั้นกว่าหากลบหนึ่งแถวด้วยคีย์หลัก
หมายเหตุ : คำสั่ง INSERT, UPDATE และ DELETE จะทำงานหลังจากที่คุณโทร ->execute()
เท่านั้น
ฟรีสำหรับการใช้งานเชิงพาณิชย์และไม่ใช่เชิงพาณิชย์ภายใต้ลิขสิทธิ์ Apache 2.0 หรือ GPL 2.0