จับคู่ Eloquent กับ Codeigniter

ถ้าพูดถึง Framework ที่ดังที่สุดในชั่วโมงนี้น่าจะเป็น Laravel แต่หัวใจหลักที่ทำให้ Laravel เป็นที่ได้รับความนิยมอย่างล้นหลาม ส่วนหนึ่งก็เพราะมี ORM(Object Relational Mapping) อย่าง Eloquent แต่ตัว Eloquent เองก็ไม่ได้จำกัดตัวเองอยู่กับ Coeigniter เท่านั้นเราสามารถเอา Eloquent ไปใช้งานโดยที่ไม่ต้องมี Framework เลยก็ได้ ลองอ่านดูได้จากบทความก่อนหน้านี้

ในบทความนี้เราจะเอาตัว Eloquent นี้มาใช้ใน framework ที่มีขนาดเล็กอย่าง Codeigniter กันดูบ้าง โดยเราจะต้องทำการติดตั้ง Eloquent เข้าไปใน Codeigniter ตามขั้นตอนต่อไปนี้

  1. download Eloquent ผ่านทาง composer ด้วยคำสั่ง

    ชื่อ package ของ Eloquent คือ illuminate/database ซึ่ง Core ของ Laravel จะมีชื่อเดียวกันคือ illuminate
  2. ทำการ require ไฟล์ autoload.php เข้ามา โดยเปิดไฟล์ index.php ใน folder ของ CodeIgniter

    ป้องกันการ Error แนะนำว่าวางไว้ก่อน บรรทัดที่ require ‘core/CodeIgniter.php’ เพื่อความชัวร์
  3. ทำการ load ตัว Eloquent ขึ้นมาใช้งานโดยไปที่ไฟล์ database.php(ที่เลือก database.php เพราะถ้าจะติดต่อ database ยังไงก็ต้อง load ไฟล์นี้ขึ้นมาทำงาน และไฟล์นี้ก็เกี่ยวข้องกับการติดต่อ database โดยตรง)

หลังจากนั้นเราจะสามารถเรียกใช้งาน Query Builder ผ่านทาง DB::(ตามด้วยชื่อ method ที่ต้องการ)
แต่ถ้าต้องการสร้าง Model(ใช้งานแบบ ORM) เราต้องให้ model ของเรา extend จาก Illuminate\Database\Eloquent\Model แทนที่จะเป็น CI_Model แบบของเดิม หลังจากนั้นเราจะสามารถเรียกใช้งานได้โดยใช้ (ชื่อ Model)::(ตามด้วยชื่อ method ที่ต้องการ)

ในรายละเอียดของ Eloquent สามารถเข้าไปอ่านได้ที่ document ของ Laravel หวังว่าคงจะถูกใจสาวก Codeigniter กันนะครับ

การใช้งาน Eloquent โดยไม่ง้อ Laravel

จากบทความตอนที่แล้ว ทำความรู้จักกับ Eloquent เราได้ทำความรู้จักกับ Feature ต่างๆที่ Eloquent มี แต่เราต้องใช้กับ Laravel เท่านั้นรึเปล่า คำตอยคือไม่ใช่ สำหรับคนที่ยังไม่ได้ใช้งาน Laravel เราสามารถนำเอา Eloquent ไปใช้งานข้างนอกได้เหมือนกับ library ปกติ

โดยการนำเอา Eloquent ไปใช้งานมีดังนี้

ทำการ Download Eloquent จาก Github งานนี้ต้องใช้ Composer เข้าช่วย โดยการสร้าง Coposer.json ไว้ใน Folder ที่ต้องการจะ Download โดยใน Conposer จะมีเนื้อหาดังนี้

หลังจากนั้น เราเข้าไปที่ Folder ที่เราต้องการนี้แล้ว run คำสั่ง

เท่านี้ Conposer จะไปทำการ Download library ตัวที่เกี่ยวข้องมาให้เราทั้งหมด

หลังจากนั้นเราต้อง require ไฟล์ autoload.php ที่อยู่ใน folder vendor เข้ามา

ขั้นตอนที่สำคัญที่สุดคือการ new Capsule  ขึ้นมาใช้งาน เพราะ Capsule นี่จะเป็น Class ที่ทำให้ Eloquent สามารถทำงานอยู่ภายนอก Laravel ได้ แนะนำว่าให้แยกไฟล์นี้ไว้ต่างหาก แล้วใช้การ require หรือ include เข้ามาใช้งาน

โดย Code ที่เขียนมีดังนี้

เปลียน Connection ไปยัง Database ที่เราต้องการ หลังจากนั้นเราก็สามารถใช้งาน Eloquent ได้โดยไม่ต้องพึ่ง Laravel อีกต่อไป

ทั้งแบบ Query Builder

และ แบบ ORM