Hướng dẫn dùng laravel findwhere trong PHP
Giới thiệuHôm nay tôi cùng các bạn đi tìm hiểu về viết Repository trong 1 dự án sử dụng Laravel Framework. Về định nghĩa và khái niệm chúng ta có thể xem qua ở đây . Trước đầu tiên ta cần thống nhất về cách thức viết Repository đã nhé. Theo 1 lời của 1 GL của Framgia thì trình tự để tạo Repository như sau: Show
Model trong LaravelVề các hàm làm việc database ta có thể xem trực tiếp trên document của Laravel. Và trong bài này ta chủ yếu làm với các hàm cơ bản và dùng nhiều trong Model đó là:
Ngoài ra 1 điểm nữa khi sử dụng trong Model đó là ta sử dụng các hàm liên tiếp nhau. Ví dụ như là: Tìm các người dùng có email là framgia.com và đang kích hoạt ta dùng như sau.
Tạo interface RepositoryInterfaceỞ đây bạn cần tạo 1 interface cho Repository, ở đây sẽ list các function cơ bản làm việc trực tiếp với Model. Trong bài này sẽ là 9 function mà đã liệt kê ở trên:
Tạo Eloquent RepositoryTại đây sẽ là các function hoạt động trực tiếp lên Model, đây là nơi duy nhất được làm việc trực tiếp đến Model, còn các Repository khác không làm việc trực tiếp Model mà phải gọi các function tại đây, nếu thiếu các hàm nào thì bổ sung tại đây. Đầu tiên ta cần khởi tạo EloquentRepository
Và ta thấy khi khởi tạo sẽ dùng đến hàm makeModel() tại đây chúng ta sẽ gọi đến Model được khai báo trong các class Repository khác sau đó gán $model bằng giá trị đó. Tạo các Repository của các ModelVới mỗi model ta đều nên tạo 1 Repository rieeng của nó. Vậy để tạo các Repository này ta làm như. Ví dụ ta sẽ tạo UserRepository dành cho model User thì sẽ như sau:
Trong trường hợp nếu như Repository mà ta cần dùng đến các Repository khác hay lấy từ model khác thì ta chỉ cần gọi các Repository tương ứng. Ví dụ trong UserRepository ta muốn lấy thêm GroupRepository chẳng hạn, với điều kiện ta đã tạo GroupRepository rồi.
Như vậy nếu ta lấy các query liên quan đến Group thì dùng qua GroupRepository thông qua biến $groupRepository. Các function trong EloquentRepositoryĐể ta có thể thực hiện nhiều điều kiện như Model thì ta cần phân biệt chức năng của function. Các function về điều kiện và function làm việc trực tiếp trên DB. Ví dụ các function như Cacs function điều kiệnNhư đã nói ở trên thì các điều kiện này ta cần đưa vào 1 mảng.
Và khi gọi đến where ta đưa các param vào array
Như vậy ta cần 1 hàm để thực thi các array điều kiện này. Trong bài viết này tôi sử dụng hàm loadWhere()
Các function thực thi DBVới các function thực thi thì với các function như
Còn với các function còn lại ta sử dụng loadWhere để lọc các điều kiện và thực thi câu lệnh liên quan DB
Kết luậnTrong bài viết này tôi chỉ nêu qua các sử dụng cơ bản và các hàm cơ bản, còn nhiều cái khác nữa các bạn tự phát triển thêm như các hàm order, with, ... Có người từng hỏi, tại sao lại dùng Repository trong khi bản thân Model nó đã ưu việt rồi. Ngoài những ưu điểm ở bài viết thì tôi cũng bổ sung cái lợi thế thực tế trong dự án:
|