Trong bài đăng này, tôi sẽ chỉ cho bạn cách in hoặc nhận truy vấn được thực hiện cuối cùng trong ứng dụng Laravel 8 của bạn. Đôi khi, chúng tôi cần làm điều này để ghi nhật ký hoặc gỡ lỗi và xác định hiệu suất của các truy vấn của chúng tôi là gì
May mắn thay, Laravel cung cấp một phương thức để lấy truy vấn được thực thi cuối cùng và tôi sẽ chỉ cho bạn cách
Nhận truy vấn cuối cùng trong Laravel Eloquent
Trong ví dụ này, chúng ta sẽ chỉ thêm phương thức toSql[] vào truy vấn hùng hồn của mình. Xem ví dụ bên dưới
$user = User::where['id',1]->toSql[];
dd[$user];
Xem bên dưới đầu ra
"select * from `users` where `id` = ?"
Ghi lại truy vấn cuối cùng trong Laravel Eloquent
Trong phương pháp này, chúng tôi sẽ ghi lại truy vấn hùng hồn Laravel cuối cùng của chúng tôi. Xem mã ví dụ bên dưới
DB::enableQueryLog[];
$user = User::get[];
$query = DB::getQueryLog[];
dd[$query];
đầu ra mẫu
array:1 [▼
0 => array:3 [▼
"query" => "select * from `users`"
"bindings" => []
"time" => 30.66
]
]
Gỡ lỗi Truy vấn Eloquent cuối cùng của Laravel
Trong mẫu này, chúng tôi sẽ gỡ lỗi truy vấn hùng hồn cuối cùng của Laravel. Xem mã bên dưới
DB::enableQueryLog[];
$user = User::get[];
$query = DB::getQueryLog[];
$query = end[$query];
dd[$query];
đầu ra mẫu
array:3 [▼
"query" => "select * from `users`"
"bindings" => []
"time" => 22.04
]
Nhận/In Truy vấn MySQL được thực hiện lần cuối
Trong phần này, chúng tôi sẽ nhận/in truy vấn MySQL được thực hiện cuối cùng. Xem ví dụ sau
\DB::enableQueryLog[];
$users = \DB::table["users"]->get[];
$query = \DB::getQueryLog[];
dd[end[$query]];
đầu ra
array:3 [▼
"query" => "select * from `users`"
"bindings" => []
"time" => 26.94
]
Bây giờ bạn đã có ý tưởng về cách đăng nhập/gỡ lỗi truy vấn được thực hiện lần cuối trong ứng dụng Laravel của mình. Tôi hy vọng nó sẽ giúp
Trình tạo truy vấn cơ sở dữ liệu cung cấp giao diện thuận tiện, thông thạo để tạo và chạy các truy vấn cơ sở dữ liệu. Nó có thể được sử dụng để thực hiện hầu hết các hoạt động cơ sở dữ liệu trong ứng dụng của bạn và hoạt động trên tất cả các hệ thống cơ sở dữ liệu được hỗ trợ
Ghi chú. Trình tạo truy vấn của Laravel sử dụng liên kết tham số PDO xuyên suốt để bảo vệ ứng dụng của bạn khỏi các cuộc tấn công SQL injection. Không cần xóa các chuỗi được truyền dưới dạng ràng buộc
chọn
Lấy tất cả các hàng từ một bảng
________số 8Chunking kết quả từ một bảng
DB::table['users']->chunk[100, function[$users]
Bạn có thể ngừng xử lý các khối tiếp theo bằng cách trả lại
"select * from `users` where `id` = ?"
09 từ "select * from `users` where `id` = ?"
10DB::table['users']->chunk[100, function[$users]
Truy xuất một hàng từ một bảng
"select * from `users` where `id` = ?"
0Truy xuất một cột từ một hàng
"select * from `users` where `id` = ?"
1Truy xuất danh sách các giá trị cột
"select * from `users` where `id` = ?"
5Phương thức này sẽ trả về một mảng các chức danh vai trò. Bạn cũng có thể chỉ định cột khóa tùy chỉnh cho mảng được trả về
"select * from `users` where `id` = ?"
6Chỉ định một mệnh đề chọn
"select * from `users` where `id` = ?"
7Thêm một mệnh đề chọn vào một truy vấn hiện có
"select * from `users` where `id` = ?"
8Sử dụng toán tử Where
"select * from `users` where `id` = ?"
9Hoặc Tuyên bố
DB::table['users']->chunk[100, function[$users]
0Sử dụng ở đâu giữa
DB::table['users']->chunk[100, function[$users]
1Sử dụng Where Not Between
DB::table['users']->chunk[100, function[$users]
2Sử dụng Where In với một mảng
DB::table['users']->chunk[100, function[$users]
3Sử dụng Where Null để tìm bản ghi với giá trị chưa đặt
DB::table['users']->chunk[100, function[$users]
4Mệnh đề động Where
Bạn thậm chí có thể sử dụng các câu lệnh where "động" để xây dựng trôi chảy các câu lệnh where bằng các phương thức ma thuật
DB::table['users']->chunk[100, function[$users]
5Sắp xếp theo, theo nhóm và có
DB::table['users']->chunk[100, function[$users]
6Bù trừ & Giới hạn
DB::table['users']->chunk[100, function[$users]
7tham gia
Trình tạo truy vấn cũng có thể được sử dụng để viết các câu lệnh nối. Hãy xem các ví dụ sau
Tuyên bố tham gia cơ bản
DB::table['users']->chunk[100, function[$users]
8Tuyên bố tham gia trái
DB::table['users']->chunk[100, function[$users]
9Bạn cũng có thể chỉ định các mệnh đề nối nâng cao hơn
DB::table['users']->chunk[100, function[$users]
0Nếu bạn muốn sử dụng mệnh đề kiểu "where" trong phép nối của mình, bạn có thể sử dụng các phương thức
"select * from `users` where `id` = ?"
11 và "select * from `users` where `id` = ?"
12 trên phép nối. Thay vì so sánh hai cột, các phương thức này sẽ so sánh cột với một giá trịDB::table['users']->chunk[100, function[$users]
1Nâng cao
Nhóm tham số
Đôi khi, bạn có thể cần tạo các mệnh đề where nâng cao hơn, chẳng hạn như "nơi tồn tại" hoặc các nhóm tham số lồng nhau. Trình tạo truy vấn của Laravel cũng có thể xử lý những điều này
DB::table['users']->chunk[100, function[$users]
2Truy vấn trên sẽ tạo ra SQL sau
DB::table['users']->chunk[100, function[$users]
3Tồn tại báo cáo
DB::table['users']->chunk[100, function[$users]
4Truy vấn trên sẽ tạo ra SQL sau
DB::table['users']->chunk[100, function[$users]
5uẩn
Trình tạo truy vấn cũng cung cấp nhiều phương pháp tổng hợp, chẳng hạn như
"select * from `users` where `id` = ?"
13, "select * from `users` where `id` = ?"
14, "select * from `users` where `id` = ?"
15, "select * from `users` where `id` = ?"
16 và "select * from `users` where `id` = ?"
17Sử dụng các phương pháp tổng hợp
DB::table['users']->chunk[100, function[$users]
6biểu thức thô
Đôi khi bạn có thể cần sử dụng biểu thức thô trong truy vấn. Các biểu thức này sẽ được đưa vào truy vấn dưới dạng chuỗi, vì vậy hãy cẩn thận để không tạo bất kỳ điểm chèn SQL nào. Để tạo một biểu thức thô, bạn có thể sử dụng phương thức
"select * from `users` where `id` = ?"
18Sử dụng biểu thức thô
DB::table['users']->chunk[100, function[$users]
7phụ trang
Chèn bản ghi vào bảng
DB::table['users']->chunk[100, function[$users]
8Chèn bản ghi vào bảng có ID tăng tự động
Nếu bảng có id tăng tự động, hãy sử dụng
"select * from `users` where `id` = ?"
19 để chèn bản ghi và truy xuất idDB::table['users']->chunk[100, function[$users]
9Ghi chú. Khi sử dụng PostgreSQL, phương thức insertGetId mong đợi cột tăng tự động được đặt tên là "id"
Chèn nhiều bản ghi vào một bảng
"select * from `users` where `id` = ?"
00cập nhật
Cập nhật các bản ghi trong một bảng
Tăng hoặc giảm giá trị của một cột
"select * from `users` where `id` = ?"
01Bạn cũng có thể chỉ định các cột bổ sung để cập nhật
"select * from `users` where `id` = ?"
02xóa
Xóa các bản ghi trong một bảng
"select * from `users` where `id` = ?"
03Xóa tất cả các bản ghi khỏi một bảng
"select * from `users` where `id` = ?"
04Cắt bớt một bảng
"select * from `users` where `id` = ?"
05đoàn thể
Trình tạo truy vấn cũng cung cấp một cách nhanh chóng để "kết hợp" hai truy vấn với nhau
"select * from `users` where `id` = ?"
06Phương thức
"select * from `users` where `id` = ?"
50 cũng có sẵn và có cùng chữ ký phương thức như "select * from `users` where `id` = ?"
51khóa bi quan
Trình tạo truy vấn bao gồm một vài hàm để giúp bạn thực hiện "khóa bi quan" trên các câu lệnh CHỌN của mình