Xin chào tất cả anh em, như tiêu đề hôm nay mình sẽ giới thiệu cho mọi người về một phần rất hữu dụng và thường được sử dụng trong Laravel Eloquent, bắt đầu luôn nhé.
- Accessors và Mutators là gì? Tại sao nên sử dụng
Accessors và Mutators cho phép anh em convert data khi nó được lấy ra từ Model và set data trước khi nó được lưu vào database.
Đọc đến đây nhiều anh em sẽ nghĩ thế thì cần gì phải dùng đến 2 cái này, đúng là có nhiều cách để có thể get và set data nhưng Accessors và Mutators có thể làm điều này 1 cách tự động mà không cần phải gọi lại nhiều lần.
- Accesors
Accessors cho phép anh em convert lại data trước khi lấy ra khỏi model.
VD: Để có full_name từ first_name và last_name trong model User, ta sẽ thêm function sau vào model
Mỗi khi get data từ Model mặc định field “full_name” với giá trị được ghép từ “first_name” và “last_name” sẽ được thêm vào 1 cách tự động
Anh em sẽ thắc mắc tại sao tên field lại là “full_name”, nếu để ý thì tên funcion chính là cú pháp của nó: get + {Tên field ở dạng Camel Case} + Attribute
Chú ý vì field “full_name” không có trong model thì cần khai báo thêm như sau:
Vậy nếu chúng ta cần format data trong Model thì sao?
VD: Mặc định datetime của “created_at” lưu trong DB sẽ là Y-m-d H:i:s nếu chúng ta cần convert nó về d/m/Y H:i:s
- Mutators
Ngược lại với Accessors thì chúng ta có người anh em Mutators, Mutators cho phép convert data trước khi nó được lưu vào database
VD: Ta cần set first_name và last_name của user về dạng lower case trước khi lưu vào DB
cú pháp ở đây là: set + {tên field dạng Camel Case} + Attribute
Chú ý trước khi sử dụng: Khi anh em định nghĩa Accessors và Mutators thì nó sẽ mặc định luôn gọi mỗi khi anh em get hoặc save data nên hãy sử dụng sao cho hợp lý nhé
Hi vọng bài viết có thể giúp ích anh em ít nhiều! Nếu cần thông tin đầy đủ hơn, xem tại đây:
Ác chưa kìa 😮
Hay thật, thề!