algolia search

Tìm thấy x bài viết trong xms.

Laravel 8.23 sole() Query Builder Method

Laravel 8.23 sole() Query Builder Method


Book::where('title', 'like', '%Artisan%')->sole();

Laravel 8.23 ​​giới thiệu một phương thức sole() trong Query Builder, phương thức này truy xuất một bản ghi đồng thời cũng có các xác nhận bổ sung.

Sole hữu ích khi bạn cần một bản ghi từ truy vấn và muốn kiểm tra chắc chắn truy vấn chỉ khớp với một bản ghi. Tức là khi bạn mong đợi một bản ghi nhưng vẫn muốn đảm bảo tuyệt đối rằng chỉ một bản ghi tồn tại. Khi tồn tại nhiều hơn một hoặc ít hơn một bản ghi, Laravel throw một Exception.

Như vậy khi thực hiện truy vấn với phương thức sole() có 3 trường hợp xảy ra

  1. Câu truy vấn cho kết quả 1 bản ghi: không có chuyện gì xảy ra
  2. Câu truy vấn trả về ít hơn 1 bản ghi (0 record): ngoại lệ Illuminate\Database\RecordsNotFoundException sẽ được ném ra.
  3. Câu truy vấn trả về nhiều hơn 1 bản ghi: ngoại lệ Illuminate\Database\MultipleRecordsFoundException sẽ được ném ra.

Thông thường để lấy 1 bản ghi ta thường dùng get() hoặc first(), nhưng để kiểm tra xem câu truy vấn này chỉ cho kết quả 1 bản ghi hay không thì sole() là một phương thức hữu ích.

Giả sử không có phương thức sole() chúng ta sẽ phải viết ntn:

$books = Book::where('title', 'like', '%Artisan%')->take(2)->get();

if ($books->isEmpty()) {
    throw new \Illuminate\Database\RecordsNotFoundException;
}

if ($books->count() > 1) {
    throw new \Illuminate\Database\MultipleRecordsFoundException;
}

$book = $books->first();

Đánh giá bài viết

Thích thì like
Laravel 8.23 sole() Query Builder Method
5/5 1 votes

Bình luận

Hiển thị bình luận Facebook