จับคู่ 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

 

ทำความรู้จักกับ Eloquent

หลายคนที่ได้ใช้ Laravel ส่วนหนึ่งคงจะติดใจการใช้งานตัว ORM อย่าง Eloquent ซึ่งใช้ Active Record Pattern เหมือนกับใน Ruby on Rail ซึ่งจะทำให้เราสามารถทำงานกับฐานข้อมูลได้อย่างง่ายดายและเป็น OOP แบบ 100% ซึ่งความสามารถของ Eloquent นั้นทำได้หลายอย่าง ทั้งเรื่องของ Query Builder ซึ่งจะเหมือนกับ Active Record ใน CI เราสามารถทำงานกับฐานข้อมูลโดยที่ไม่ต้องทำการ Map Object เลย Feature นี้จะเหมาะกับคนที่ยังติดอยู่กับการเขียน Query ด้วย SQL

นอกจากนี้ยังมีส่วนของ ORM ซึ่งต้องทำการ Mapping ก่อนการใช้งาน แต่การ Mapping แบบ Acrive Record นั้นง่ายมากๆ

ส่วน Featuure พื้นฐานอื่นๆ เช่นการสร้าง Connection ไปยัง Database หลายๆตัว หรือการ return ผลลัพธ์กลับมาเป็น Array หรือ JSON ก็มีให้ใช้งานอย่างครบถ้วน

ส่วน Feature ที่เด็ดมากของ Eloquent คือมีตัว Migration ทำให้เราสร้าง Schema ของ Database เก็บไว้ใน Code เลย (เราสามารถ Generate Table ใหม่กี่ครั้งก็ได้ ) ต่อไปนี้เราไม่ต้องแยกทำ Version Control ของ Database Schema อีกต่อไป

การทำงานกับการ Insert, Update และ Delete แบบทีละหลายๆ Record ก็ทำได้ง่าย

เรื่องของความรวดเร็วก็ต้องบอกว่าทำงานได้เร็ว โดยที่ไม่รู้สึกว่ามี ORM

ส่วนเรื่องของ Database ที่ Support นั้น มีหลายตัว ประกอบไปด้วย MySQL, Postgres, SQLite, and SQL Server เสียอย่างเดียวยังไม่ Support Database ยักษ์ใหญ่อย่าง Oracle

ข้อเสียอีกอย่างที่สำคัญมากคือ การ Mapping แบบ Single Table Inheritance และ Create Table Inheritance ยังทำไม่ได้ แต่ก็มีคนสร้าง plugin ต่างๆ  เพื่อพยายามปิดช่องโหว่ตรงนี้

แต่โดยรวมแล้วถือว่าเป็น ORM ที่น่าใช้งานเป็นอย่างยิ่ง

เปิดอบรมหลักสูตรการใช้งาน Doctrine วันที่ (28 มกราคม – 1 กุมภาพันธ์ 2556)

หลักสูตรนี้จะพูดถึงการใช้งาน Doctrine ซึ่งเป็น framework ที่ช่วยในการ Map ระหว่าง ข้อมูลในฐานข้อมูลแบบ relational มาเป็น Object หรือเรียกง่ายๆว่า ORM ผู้เรียนจำเป็นต้องมีพื้นฐานในการเขียนโปรแกรมด้วย PHP มาเป็นอย่างดี โดยในหลักสูตรนี้จะพูดถึงการนำ Doctrineไปใช้งานร่วมกับ MVC Framework อย่าง CodeIgniter ซึ่งเป็น Framework ที่มีคนใช้มากที่สุด

  • สถานที่เรียนอยู่ชั้น 10 อาคาร Software Park ตรงข้าม Central แจ้งวัฒนะ
  • เวลาเรียน 5 วัน
  • ราคา 10,000 บาท ถ้านำ Notebook มาเองลดเหลือ 8500 บาท

หรือสามารถเข้าไปติดต่อสอบถามรายละเอียดเพิ่มเติมได้ที่ www.facebook.com/irobust

นอกจากนี้ยังมีหลักสูตรอื่นๆอีกมากมายเข้าไปดูได้ที่ www.irobust.co.th