Hiện thị Raw Sql Query cùng với Bindings đang được đưa vào Laravel 10
Laravel 10 đang được trang bị một tính năng được mong chờ từ lâu để lấy trực tiếp câu truy vấn SQL gốc, bao gồm cả ràng buộc (bindings) 🥳:
Tính năng này sẽ là một phần của phiên bản v10.x tiếp theo, thường được phát hành hàng tuần:
// Using the new `toRawSql()` method
User::where('email', 'foo@example.com')->toRawSql();
// "SELECT * FROM users WHERE email = 'foo@example.com'"
Trước đó đã có một số công cụ phát triển khác (developer tools) (ví dụ: Laravel Debugbar) cung cấp cho bạn các truy vấn, và cũng có một phương thức dd() bạn có thể sử dụng:
// Using the dd() method
User::where('email', 'foo@example.com')->dd();
// "SELECT * FROM users WHERE email = ?"
// [
// 0 => "foo@example.com"
// ]
Tính năng dd() rất tốt và cung cấp cho bạn tất cả những gì bạn cần. Tuy nhiên, bạn phải sao chép/dán/chèn thủ công các ràng buộc nếu bạn muốn chạy lại, giải thích và khắc phục sự cố trong truy vấn. Phương thức toRawSql() mới có thể giúp bạn làm điều đó, sao chép truy vấn và chạy nó trực tiếp trong một khách hàng cơ sở dữ liệu.
Cảm ơn Tobias Petry, người đã đóng góp vào PR này; anh ấy cũng đã đóng góp các cập nhật cơ sở dữ liệu quan trọng cho Laravel. Ví dụ, gần đây anh ấy đã đóng góp chức năng escaping trong grammar, được phát hành cùng Laravel 10.13.
Để biết thêm chi tiết về phương thức toRawSql() sắp tới, hãy xem Pull Request #47507 – đây là một tính năng tuyệt vời giúp tăng chất lượng cuộc sống của người dùng!