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
- Câu truy vấn cho kết quả 1 bản ghi: không có chuyện gì xảy ra
- 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. - 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();
Ủng hộ Chung Nguyễn Blog
Chung Nguyễn Blog sử dụng FlashVPS - Dịch vụ quản trị máy chủ chuyên nghiệp để quản lý VPS
#FlashVPS là dịch vụ cloud panel trên nền tảng web hỗ trợ khách hàng:
- * Quản lý máy chủ số lượng nhiều
- * Không có kinh nghiệm quản lý máy chủ
- * Thích sử dụng giao diện web đơn giản, trực quan hơn terminal
- * Quá nhàm chán với việc ghi nhớ và lặp lại việc gõ các câu lệnh
- * Muốn tự động hóa mọi thao tác
- * Muốn tiết kiệm thời gian quản trị máy chủ
- * Muốn tiết kiệm tiền bạc, nhân lực quản trị máy chủ 👉 https://flashvps.dev
Các bài viết trên website thường xuyên được đăng tải và cập nhật trên trang Facebook Chung Nguyễn Blog hãy tặng cho Chung một LIKE nhé! Mãi yêu các bạn!
813 👍
Bình luận