Mẹo Hay Trong Laravel – Rất Dễ Dùng

Tram Ho

Hôm nay mình sẽ tổng hợp một số mẹo hay thường được sử dụng trong Laravel để dễ dàng tìm kiếm lại khi cần. Có những thứ mình sử dụng rất thường xuyên nhưng vẫn bị quên, hay đôi khi deadline căng quá trong lúc fix bug gấp mà kiếm tìm không ra thì đã có dữ liệu được lưu lại để tiện tra cứu cũng tốt phải không nào. Ok chúng ta bắt đầu nhé

1. Những Scopes kinh điển

  • Get dữ liệu mới nhất anh em sử dụng như sau:

User::latest()->get();

Nhưng anh em đừng quên scope này để lấy danh sách user theo created_at sắp xếp giảm dần nha, chứ không phải updated_at đâu.

  • Lấy danh sách users mới nhất theo một thuộc tính bất kì: last_login_at

User::latest('last_login_at')->get();

  • Kết quả trả về với random order:

User::inRandomOrder()->get();

  • Trả về dữ liệu với một điều kiện bất kì:

2. Custom Request Validate

Nhiều lúc mình hay kiểm tra dữ liệu gửi request ngay trong Controller như sau:

Nhưng cho tới lúc Controller này chứa quá nhiều logic và coding nó sẽ trở nên khó trong việc maintain về sau này. Vậy nên cách làm tốt hơn là hay chia tách làm sao cho phần code logic trong controller trở nên ít hơn và từ đó mình đã đẩy phần xử lý validate những request sang một class khác chuyên để thực hiện công việc này.

Laravel đã chuẩn bị sẵn cho bạn nếu bạn muốn thực thi theo cách này rồi đó . Chúng ta xem sẽ phải làm như nào nha:

php artisan make:request StoreArticlePost

Khi run command này thì class StoreArticlePost có chức năng kiểm tra request khi tạo 1 post article sẽ được lưu ở đường dẫn sau : app/Http/Requests/

Thêm phần validate vào class này như sau :

Bây giờ chúng ta không khai báo việc sử dụng IlluminateHttpRequest trong controller nữa mà thay vào đó là

Cần bổ xung thêm đôi chút để giống như trường hợp sử dụng trong project thật.

Bổ sung 1:

Bạn để ý lại hàm authorize() ở trong StoreArticlePostRequest thì hàm này sẽ trả về error 403 nếu fail điều kiện, vậy nên mình cần sửa lại một chút trong hàm render của app/Exceptions/Handler.php

Bổ sung 2:

Khi xử lý lỗi request thì cần trả về messages thông báo cho nên trong request StoreArticlePostRequest cần thêm hàm messages() như sau:

Ứng dụng:

Sử dụng trong form validate như sau :

3. Lưu trữ data trong configs

Thông thường chúng ta hay xử lý data static trong configs như sau:

Mình có model BettingOdds.php

Có phần configs như sau config/bettingOdds.php

Khi sử dụng : config(’bettingOdds.sports.soccer’);

Cách làm thay thế TỐT HƠN :

BettingOdds.php

Khi sử dụng :

BettingOdds::$sports['soccer'];

Tại sao?

Bởi vì nó dễ dàng trong việc quản lý và xử lý logic mới như ví dụ này:

Sử dụng scope: BettingOdds::sport('soccer')->get();

Và như vậy bạn có thể mở rộng nó đến như nào là tùy vào yêu cầu tiếp theo của project.

4. Sử dụng Collection thay vì Array

Một ví dụ nhỏ về Array như sau:

Chúng ta có một yêu cầu cần loại bỏ táo ra khỏi lô hàng nếu có. Để thực hiện yêu cầu này tuy là có nhiều cách làm nhưng thử đặt vấn đề nếu bạn chuyển array thành collection thì xử lý có dễ dàng hơn không nhé ?

Kết quả:

['pear', 'banana', 'strawberry']

Hàm reject chỉ là một trong hơn 100 hàm có sẵn của collection để thuận tiện trong việc xử lý chuỗi dữ liệu theo từng yêu cầu. Bạn có thể tìm hiểu và sử dụng extensive collection.

5. Tổng kết

Trên đây mình trình bày một số mẹo hay trong Laravel cùng với những ví dụ thực tế, hy vọng bài viết mang lại hữu ích cho những bạn đang tìm kiếm cách làm tốt cho yêu cầu của project đang làm hay những bạn mới tìm hiểu về Laravel. Nếu như bạn đang có những cách làm hay thì đừng ngần ngại bổ sung dưới comment để mình cập nhật thêm và tham khảo bạn nha. Happy Coding !

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo