본문으로 건너뛰기

เนื้อหาภาษาไทย / 태국어 콘텐츠

시스템 가이드 검수 완료된 콘텐츠

การสร้างและใช้ Mutators และ Accessors

Mutators และ Accessors ใน Laravel เป็นฟีเจอร์ที่ช่วยให้เราสามารถกำหนดรูปแบบข้อมูลที่ต้องการเก็บลงฐานข้อมูล (Mutator) และรูปแบบข้อมูลที่ต้องการดึงขึ้นมาแสดงผล (A...

Mutators และ Accessors ใน Laravel เป็นฟีเจอร์ที่ช่วยให้เราสามารถกำหนดรูปแบบข้อมูลที่ต้องการเก็บลงฐานข้อมูล (Mutator) และรูปแบบข้อมูลที่ต้องการดึงขึ้นมาแสดงผล (Accessor) ได้สะดวก โดยสามารถปรับแต่งค่าให้เป็นไปตามที่ต้องการโดยไม่จำเป็นต้องแก้ไขข้อมูลดิบในฐานข้อมูล

  • Mutator: ใช้สำหรับปรับแต่งข้อมูลก่อนที่จะถูกบันทึกลงในฐานข้อมูล
  • Accessor: ใช้สำหรับปรับแต่งข้อมูลก่อนที่จะถูกดึงขึ้นมาแสดงผล

การสร้าง Mutators และ Accessors

Laravel จะใช้วิธีการสร้างฟังก์ชันใน Model โดยตั้งชื่อตามรูปแบบ setAttributeNameAttribute สำหรับ Mutator และ getAttributeNameAttribute สำหรับ Accessor

ตัวอย่างการใช้งาน Mutator และ Accessor

สมมติว่าเรามี Model ชื่อ User และต้องการใช้ Mutator และ Accessor สำหรับฟิลด์ name และ email

  1. การสร้าง Mutator

ตัวอย่าง Mutator ที่แปลงค่า name ให้เป็นตัวอักษรพิมพ์ใหญ่ก่อนบันทึกลงฐานข้อมูล

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function setNameAttribute($value)
    {
        $this->attributes['name'] = strtoupper($value);
    }
}

ในตัวอย่างนี้ ฟังก์ชัน setNameAttribute จะถูกเรียกทุกครั้งที่มีการกำหนดค่า $user->name และค่าที่ได้รับ ($value) จะถูกแปลงเป็นตัวพิมพ์ใหญ่ก่อนบันทึกลงในฐานข้อมูล

$user = new User;
$user->name = 'john doe'; // ค่า name จะถูกแปลงเป็น 'JOHN DOE'
$user->save();

2. การสร้าง Accessor

ตัวอย่าง Accessor ที่แปลงค่า email ให้เป็นตัวอักษรพิมพ์เล็กทุกครั้งที่เรียกใช้

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function getEmailAttribute($value)
    {
        return strtolower($value);
    }
}

ในตัวอย่างนี้ ฟังก์ชัน getEmailAttribute จะถูกเรียกทุกครั้งที่มีการเรียกใช้ $user->email และจะแปลงค่าของ email เป็นตัวพิมพ์เล็กก่อนแสดงผล

$user = User::find(1);
echo $user->email; // แสดงค่า email ในรูปแบบตัวพิมพ์เล็ก

การใช้งานร่วมกันระหว่าง Mutators และ Accessors

Mutator และ Accessor สามารถใช้งานร่วมกันเพื่อควบคุมข้อมูลได้อย่างมีประสิทธิภาพ ตัวอย่างเช่น:

  • ใช้ Mutator แปลงชื่อให้เป็นตัวพิมพ์ใหญ่ก่อนบันทึก
  • ใช้ Accessor แสดงชื่อที่มีการปรับแต่งเพิ่มเติมก่อนแสดงผล
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function setNameAttribute($value)
    {
        $this->attributes['name'] = strtoupper($value);
    }

    public function getNameAttribute($value)
    {
        return "Mr./Ms. " . ucfirst($value);
    }
}

Mutator: เปลี่ยนชื่อให้เป็นตัวพิมพ์ใหญ่ เช่น john doe จะถูกบันทึกเป็น JOHN DOE

Accessor: เพิ่ม "Mr./Ms." ที่หน้า name เช่น JOHN DOE จะแสดงผลเป็น Mr./Ms. John doe

การนำไปใช้งาน

Mutators และ Accessors ช่วยให้เราสามารถจัดการข้อมูลใน Model ได้อย่างยืดหยุ่น สามารถควบคุมรูปแบบการบันทึกและแสดงผลข้อมูลได้ตามต้องการ โดยไม่ต้องทำการแปลงข้อมูลทุกครั้งที่เรียกใช้งาน ช่วยให้โค้ดมีความกระชับและง่ายต่อการบำรุงรักษา

Office.in.th Custom Service

이 구조를 바탕으로 시스템을 개발하거나 맞춤 변경하고 싶으신가요?

Office.in.th는 엔터프라이즈 웹 애플리케이션, API 연동, 공공/민간 업무 관리 시스템을 설계·개발하며 장기 지원을 제공합니다.

소프트웨어 개발 서비스 보기