จากบทความตอนที่แล้ว ทำความรู้จักกับ Eloquent เราได้ทำความรู้จักกับ Feature ต่างๆที่ Eloquent มี แต่เราต้องใช้กับ Laravel เท่านั้นรึเปล่า คำตอยคือไม่ใช่ สำหรับคนที่ยังไม่ได้ใช้งาน Laravel เราสามารถนำเอา Eloquent ไปใช้งานข้างนอกได้เหมือนกับ library ปกติ
โดยการนำเอา Eloquent ไปใช้งานมีดังนี้
ทำการ Download Eloquent จาก Github งานนี้ต้องใช้ Composer เข้าช่วย โดยการสร้าง Coposer.json ไว้ใน Folder ที่ต้องการจะ Download โดยใน Conposer จะมีเนื้อหาดังนี้
|
{ "require": { "illuminate/Database": "*" } } |
หลังจากนั้น เราเข้าไปที่ Folder ที่เราต้องการนี้แล้ว run คำสั่ง
เท่านี้ Conposer จะไปทำการ Download library ตัวที่เกี่ยวข้องมาให้เราทั้งหมด
หลังจากนั้นเราต้อง require ไฟล์ autoload.php ที่อยู่ใน folder vendor เข้ามา
ขั้นตอนที่สำคัญที่สุดคือการ new Capsule ขึ้นมาใช้งาน เพราะ Capsule นี่จะเป็น Class ที่ทำให้ Eloquent สามารถทำงานอยู่ภายนอก Laravel ได้ แนะนำว่าให้แยกไฟล์นี้ไว้ต่างหาก แล้วใช้การ require หรือ include เข้ามาใช้งาน
โดย Code ที่เขียนมีดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
use Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); // ทำให้สามารถเรียก Capsule แบบ Static Class ได้ $capsule->setAsGlobal(); // Setup the Eloquent ORM $capsule->bootEloquent(); |
เปลียน Connection ไปยัง Database ที่เราต้องการ หลังจากนั้นเราก็สามารถใช้งาน Eloquent ได้โดยไม่ต้องพึ่ง Laravel อีกต่อไป
ทั้งแบบ Query Builder
|
$users = Capsule::table('users')->where('votes', '>', 100)->get(); |
และ แบบ ORM
|
class User extends Illuminate\Database\Eloquent\Model {} $users = User::where('votes', '>', 1)->get(); |