Laravel Event Model – 1 trong những thứ thay đổi cách viết code của bạn

Tram Ho

Xin chào các bạn , đây là lần đầu mình viết bài nên có gì thiếu xót mọi người bỏ qua ạ .

1. Đi vào vấn đề

Chắc hẳn nhiều bạn làm việc với laravel đã nghe đến cụm từ Event nhưng lại khá khó hiểu , bài viết này của mình sẽ không đi sâu vào Event mà mình sẽ giới thiệu các bạn Event Model sẽ mang đến cho bạn 1 cách nhìn khác về event và cũng giúp cho code của bạn nhìn sạch sẽ hơn hihi.

Ở đây mình sẽ đề cập đến eloquent để cho các bạn hiểu 1 cách dễ nhất . Chẳng hạn bây giờ bạn muốn thực hiện 1 hành động nào đó trước khi tạo hay cập nhật 1 bảng nào đó trong database . Thực tế ở đây mình có 2 bảng

Worktime và Workmonth , để tạo Worktime đầu tiên bạn phải kiểm tra xem Workmonth đó đã có chưa , nếu có rồi thì tiếp tục tạo Worktime và có thể lấy được id của Workmonth . Ngược lại nếu Workmonth chưa có thì bạn phải bắt buộc phải tạo Workmonth thì mới có thể tiếp tục
Bình thường thì tùy vào mỗi người sẽ có cách viết vào model hay controller , thường thường mình thấy mọi người sử dụng eloquent thì thường sẽ viết hết code ở bên ngoài controller ,chẳng hạn như này :

Đấy là code cũ , còn bây giờ mình sẽ giới thiệu các bạn event trong model

Nhìn vào đây các bạn có thể đã biết rồi đúng ko ạ . Mình sẽ nói tập trung vào creating và created , mấy cái dưới nó cũng tương tự và cũng có khá nhiều hàm , ở đây mình chỉ giới thiệu 4 hàm mà mình hay sử dụng thôi . Đầu tiên là creating , các bạn cứ hiểu đó là hành động xảy ra trước khi nó tạo 1 bản ghi mới . Nhiều bạn sẽ thắc mắc $model ở đây là gì , mình nói đơn giản cho các bạn dễ hiểu có thể là sai , $model chứa những giá trị mà ở bạn gửi đi để tạo bản ghi mới , chút nữa các bạn xem phần ví dụ ở dưới sẽ hiểu . Tiếp theo Created là gì ? Created là hành động mà sau khi bạn đã thực hiện xong việc tạo mới 1 bản ghi , $model ở đây sẽ chứa những giá trị mà bạn đã lưu vào .

Tiếp tục phần code trên mình sẽ trình bay theo cách sử dụng Event Model để các bạn có thể hiểu rõ nó.

Nhiều bạn sẽ thắc mắc ở đây dữ liệu còn thiếu mà đã create … sẽ xảy ra lỗi , câu trả lời là KHÔNG , chúng ta cùng tiếp tục để hiểu vấn đề nào

Ở đây mình trình bày code như này , đầu tiên mình vẫn kiểm tra Workmonth như bình thường , tuy nhiên sẽ có phần $model->user_id là biến mà mình đã truyền vào ở controller . tiếp đó có đoạn $model->workmonth_id là mình đã gán workmonth_id vào trong model với 1 giá trị nào đó trước khi thực hiện hành động lưu vào trong database .
Phần update mình sẽ không đề cập đến nữa , nó chỉ tương tự như ở create thôi , các bạn có thể thao tác tương tự tuy nhiên hành động nó sẽ khác nhau .

Khi sử dụng event model các bạn đã thấy code của mình ở controller khá sạch sẽ , mình cũng đã tìm hiểu qua nhưng không thấy ai viết rõ về vấn đề này nên nay mình mạo muội viết , có thể sẽ giúp ích các bạn trong 1 số trường hợp nào đó .

Bài viết của mình tạm dừng đến đây , cám ơn các bạn đã theo dõi.

Mình vẫn còn là code gà nên các bạn gạch đá ít thôi ạ 😃) .

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo