Laravel DB Cách tạo truy vấn con trong câu lệnh select

0
1142

Laravel DB Subquery in select statement

Đôi khi chúng ta yêu cầu thực hiện truy vấn con bên trong câu lệnh select trong Laravel. Tại thời điểm đó, chúng tôi đang nghĩ cách chọn từ truy vấn con bằng cách sử dụng trong Laravel Query Builder.

Trong bài đăng này, nhantam sẽ cung cấp cho bạn ví dụ về truy vấn con trong câu lệnh select trong ứng dụng Laravel 6.x Với truy cấn con trong select chúng ta hay thường dùng.

DB:raw()

Thông qua raw của DB, chúng ta có thể chỉ cần thực hiện tham gia truy vấn con trong Laravel Eloquent Query Builder.

Ví dụ: Về câu truy vấn con trong câu lệnh select:
Giả xử chúng ta có 2 table
table[orders] // Lưu trữ đơn hàng
table[order_detail] // Lưu trữ chi tiết sản phẩm của đơn hàng bao gồm sản phẩm, số lượng

Yêu cầu bài toán làm sao truy vấn đơn hàng, biết được đơn hàng đó có bao nhiêu sản phẩm, số lượng bao nhiêu?

Bình thường chúng ta sẽ truy vấn MySQL Query như sau:

SELECT
a.*, 
(SELECT COUNT(b.Order_id) FROM order_detail AS b WHERE a.Id = b.Order_id) AS total_product,
(SELECT SUM(b.Qty) FROM order_detail AS b WHERE a.Id = b.Order_id) AS total_qty
FROM orders AS a

Vậy chúng ta phát biểu truy vấn sub select bên trên với Laravel DB như thế nào?

$orders = DB::table("orders")
->select("orders.*",
	DB::raw("(SELECT COUNT(b.order_id) FROM order_detail AS b WHERE orders.id = b.order_id) AS total_product"),
	DB::raw("(SELECT SUM(b.quantity) FROM order_detail AS b WHERE orders.id = b.order_id) AS total_qty"))
->orderByRaw('created_at DESC')
->offset(0)
->limit(5)
->get();

// Kết quả truy vấn

  • Đơn hàng số 1 có: Tổng số sản phẩm là: 1 sản phẩm. Tổng số lượng là: 1
  • Đơn hàng số 2 có: Tổng sổ sản phẩm là: 3. Tổng số lượng là: 4

Các bạn xem thêm hướng dẫn về phướng thưc raw() tại website của Laravel DB

Chúc các bạn thành công

nhantam
Thiết kế web tại Panpic.vn

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây

91 − = 83