Sử dụng query builder trong Laravel

Sử dụng query builder trong Laravel là cách rất đơn giản, dễ dàng , nhanh chóng để tương tác với database từ trong Laravel.


Cấu hình kết nối database

Laravel hỗ trợ kết nối đến nhiều loại database qua PDO như sqlite, mysql , sql server, postgresql… Khai báo kết nối database mặc định trong config/database.php

Thường dùng nhất trong Laravel là kết nối đến database mysql. Các thông số bạn cần khai báo để kết nối database nằm trong file .env . Có 5 thông số:

Giới thiệu thư viện query builder

Query builder là 1 công cụ có sẵn trong Laravel. Dùng để select, insert, update, delete dữ liệu trong các table rất dễ dàng. Trong Laravel, bạn sử dụng query builder thông qua class DB.

Sử dụng lệnh sau trước khi dùng DB (trong controller):  use DB;

Tạo 1 query để lấy dữ liệu trong 1 table

  • tblName là tên table trong database
  • op là phép toán : > =, < , <=, >=
  • from: lấy từ rercord thứ mấy
  • numrecord: lấy bao nhiêu record

Khi đã tạo query, bạn có thể thực thi các hàm trong query để lấy mọi record, một record, cột cột, các hàm tổng kết…như sau:

Các hàm thường dùng trong query

  • $query-> get() =>Lấy danh sách các rercord thõa mãn điều kiện trong query.
  • $query->first() =>lấy record đầu tiên
  • $query->value(‘tenField’) => lấy giá trị của cột tenField
  • $query->pluck(‘tenField’) => lấy các giá trị của field tenField
  • $query->max(‘tenField’) => lấy giá trị lớn nhất của tenField
  • $query->min(‘tenField’) => lấy giá trị nhỏ nhất của tenField
  • $query->sum(‘tenField’) => lấy tổng các giá trị của tenField
  • $query->avg(‘tenField’) => lấy giá trị trung bình của tenField $query->count(‘tenField’) => đếm số record trong query

Lấy record đầu tiên

Để lấy record đầu tiên trong querry, bạn dùng hàm first().  Hàm này trả về một đối tượng. Ví dụ code trong routes/web.php:

Lấy danh sách các record trong query

Để lấy danh sách các record, dùng hàm get() của query. Hàm này trả về 1 collection các record cho bạn.

Lấy giá trị trong một field

Để lấy giá trị trong 1 cột nào đó, dùng hàm value()

Lấy mảng các giá tri của 1 field với hàm pluck()

Các hàm tổng kết trong query

Query cũng có các hàm tổng kết dữ liệu max, min, sum, avg. Bạn xem ví dụ sau sẽ biết cách dùng

Query có Where, Order By, Limit

Bạn có thể tạo các query chứa các hàm where, orderby, limit, offset… Sau đó lấy list record

Sử dụng query có Join bảng

Trong query có thể join nhiều bảng để lấy dữ liệu, sau đó lấy danh sách record.

Kiểm tra record tồn tại

Để kiểm tra một record tồn tại không, dùng hàm exist của query.

Chèn record và lấy id

Tạo query và chèn 1 record

Chèn 1 record và lấy id của dòng mới chèn

Chèn nhiều record cùng lúc

Để chèn nhiều record, truyền cho hàm insert  một array dữ liệu

Cập nhật record

Để cập nhật record , dùng hàm update của query. Truyền tham số cho hàm update là array các field và giá trị mới.

Xóa record trong table

Để xóa record trong table, dùng hàm delete() của query

Đến đây thì bạn đã biết đa số các hàm của query Builder rồi. Giờ đến lúc ứng dụng thử qua hai hướng dẫn tổng hợp nhé:

Tổng hợp 1: Routing – lấy data – nạp view

Thử kết hợp routing – lấy data – và hiển thị trong view. Các việc thực hiện gồm:

  1. Tạo controller
  2. Tạo route dẫn vào action
  3. Tạo action trong controller
  4. Tạo view hiển thị dữ liệu
  5. Xem kết quả

1. Tạo controller

2.  Tạo route dẫn vào action của controller: trong web.php

3. Tạo action trong controller :

Trong action của controller, bạn thực hiện lấy dữ liệu trong database , sau đó nạp view và truyền dữ liệu cho view

4. Tạo resources/views/txn.php

Trong view , hiển thị dữ liệu bằng cách lặp qua mảng dữ liệu có được:

5.  Xem kết quả : http://localhost:8000/txn

Có thể định dạng css nhanh bằng tag <style> ngay trong view

TỔNG HỢP 2:  HIỆN DATA THEO THAM SỐ

Bài tổng hợp này dùng để tạo chức năng hiển thị chi tiết một tin từ database theo tham số id của tin. Các việc thực hiện gồm :

  1. Tạo route dẫn vào action
  2. Tạo action trong controller
  3. Tạo view hiển thị dữ liệu
  4. Xem kết quả

1.  Tạo route vào action của controller : trong web.php

2. Tạo action trong controller :

Trong action, thực hiện lấy dữ liệu trong database , sau đó nạp view và truyền dữ liệu cho view.

3. Tạo view: Tạo file resources/views/detail.php và code để hiện thông tin của tin

4.  Test kết quả: http://localhost:8000/tin/1

Như vậy , sử dụng query builder trong laravel dễ mà phải không. Chỉ việc khai báo kết nối đến database rồi dùng các hàm trong class DB là xong. Hehe. Bài học làm quen rới laravel framework cần học trước bài này nhé. Ngoài ra các Em tham khảo thêm tài liệu về Query builder trong link này: https://laravel.com/docs/queries