Laravel 6, 7 – EP11 การใช้งาน Model

สำหรับ Model ใน Laravel มีการใช้ Eloquent ORM ที่มาพร้อมกับ Laravel ซึ่งใช้งาน ActiveRecord ที่ทำให้เราเขียนโค๊ดเป็นระเบียบสวยงามและเรียบง่าย ในแต่ละตารางฐานข้อมูลมี “Model” ที่เป็นแบบจำลองให้เราสามารถทำงานกับฐานข้อมูล บนการเขียนโค๊ดได้ เปรียบเทียบง่ายๆเช่นเรามี ตาราง products, customer เราก็จะมี Model Product.php, Customer.php เป็นต้น

ก่อนเริ่มสร้าง Model เราต้องแน่ใจก่อนว่าเรามีการเชื่อมต่อฐานข้อมูลแล้ว วิธีการตรวจสอบสามารถเข้าไปตั้งค่าที่ ไฟล์ .env ดังนี้

Model เวลาเราสร้างแล้วไฟล์จะไปอยู่ที่ App ซึ่งเราสามารถนำไปไว้ที่ไหนก็ได้ แต่ในตัวอย่าง และคำแนะนำของผมผมจะแนะนำให้เรานำไฟล์ Model ไปไว้ที่ App\Models และวิธีการสร้าง Model ให้เราเปิด Command line มาแล้ว ให้พิมพ์คำสั่ง ตามโค๊ดด้านล่าง

เรามาเข้ามาดูไฟล์ที่เราสร้างในโฟล์เดอร์ App/Models/Flight.php

Laravel artisan ยังมีความสามารถในการสร้างไฟล์ migration ได้อีกด้วย (สำหรับ migration คือการเขียนโค๊ด PHP สร้างตารางในฐานข้อมูล) โดยคำสั่งให้เรา เติมคำ –migration หรือ -m ต่อท้าย ลองดูตัวอย่างครับ

หลังจากใช้คำสั่งสร้าง Model พร้อม Migration แล้วไฟล์ Migration จะอยู่ในโฟล์เดอร์ database/migrations

ให้เรากลับไปเปิดไฟล์ XXX_XX_XX_XXXXX_create_flights_table.php ในโฟล์เดอร์ database/migrations แล้วเพิ่มเติมโค๊ดลงไปแบบตัวอย่างด้านล่าง

หลังจากนั้น run คำสั่ง

ให้คำสั่งไป excute โค๊ดให้สร้างตาราง หลังจาก run แล้วเราจะได้ผลลัพท์คือได้ตาราง flights มา

ต่อไปเราจะมาดู Model กันต่อว่ามีอะไรบ้าง

Table Name

เวลาเราสร้าง Model มานั้น Laravel จะ จดจำชื่อ Model กับ ชื่อตารางเป็นอันเดียวกันเช่น Model Flight ตารางในฐานข้อมูลเป็น flights แต่ที่นี้ถ้าชื่อตารางเป็นชื่ออื่นเช่น my_flights ละ ต้องทำแบบไหน วิธีการคือให้ใส่คำสั่ง protected $table = ‘my_flights’; ลงไปใน Model เดี่ยวมาดู โค๊ดแบบเต็มกัน

Primary Key

โดย Model จะจดจำ Primary key ของตารางเป็น id หากเราใช้ชื่อ flight_id เป็น Primary key สามารถเปลี่ยนได้ โดยเขียนคำสั่ง protected $primaryKey = ‘flight_id’;

Timestamps

ค่าเริ่มต้นสำหรับ การบันทึกเวลาอัตโนมัติ ใน Model นั้นจะต้องมีคอลัมน์ created_at, updated_at แต่ในบางทีตารางเราไม่จำเป็นต้องมีการบันทึกเวลาไม่ต้องมี คอลัมน์เหล่านี้ ถ้าเราไม่ยกเลิกใช้งาน timestamps ใน Model เวลาเราบันทึกข้อมูล จะเกิด Error วิธีการแก้ไขนั้นให้เขียนคำสั่ง public $timestamps = false;

และอีกทั้งคุณยังไม่จำเป็นต้องกำหนดคอลัมน์ให้เป็นชื่อ created_at, updated_at สามารถเปลี่ยนชื่อได้ โดยเขียนคำสั่ง 
const CREATED_AT = ‘creation_date’;
const UPDATED_AT = ‘last_update’;

Retrieving Models

เมื่อเราสร้าง Model และ ตารางในฐานข้อมูลแล้ว เราก็พร้อมสำหรับการดึงข้อมูลที่ต้องการจากฐานข้อมูล โดยใช้ Eloquent model ในการทำ Query builder กับ Model ลองมาดูตัวอย่างโดยเขียน ไว้ใน Controller

และถ้าหากเราต้องการให้ข้อมูลเรียกเอาเฉพาะ Active=1 และ เรียงข้อมูลคอลัมน์ name จาก มากไปน้อย และดึงมาแค่ 10 รายการ สามารถเขียนได้ดังนี้

ตรงนี้ เราสามารถดูคำสั่งในการ query builder ได้ที่ https://laravel.com/docs/7.x/queries

สรุป

สำหรับ บทความ พื้นฐาน Model มีเพียงเท่านี้ครับ และมีภาคต่อของ Model และเนื้อหาที่เกี่ยวข้องด้วย คือ การทำ Migration และการทำ Relation Model 

สำหรับเนื้อหาส่วนนี้โดยรวมพูดถึงวิธีการสร้าง Model และภาพรวมว่า มีขั้นตอนการดึงข้อมูล การปรับแต่ง Model อะไรบ้าง รายละเอียดในบทความนี้หวังว่าจะเป็นแนวทางในการพัฒนาระบบของผู้อ่าน นะครับ

You May Also Like

About the Author: benext

โปรแกรมเมอร์ ติดต่อ : itoffside@hotmail.com

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.