Trước đây, khi bạn sử dụng PHP thuần làm việc, để truy vấn CSDL bạn cần viết hàm khá phức tạp, mỗi người 1 cách viết không theo quy chuẩn và thường dễ dàng bị SQL injection nếu bạn không thực sự hiểu về bảo mật trong truy vấn.
Trong Laravel, Query Build cho phép ta thao tác với Cơ sở Dữ liệu 1 cách đơn giản và thuận tiện nhất. Nó được mọi người sử dụng rất nhiều truy xuất DB, và nó hoạt động trên tất cả hệ thống CSDL mà Laravel hỗ trợ (mysql, sqlite, pgsql ...)
Query Builder sử dụng kết nối PDO (PHP Data Object), bản thân API PDO đã bảo vệ bạn trước các tấn công SQL Injection, do đó khi xử dụng Query Builder bạn không cần lo lắng khi thao tác nhập xuất dữ liệu với DB
Để bắt đầu Query builder các bạn cần phải cấu hình database kết nối đến cơ sở dữ liệu.
Laravel hỗ trợ bạn cấu hình dễ dàng trong file .env (ở ngay thư mục gốc - nếu có file env.example thì bạn đổi lại thành .env)
File .env cho phép bạn cấu hình các biến môi trường 1 cách đơn giản, nếu không muốn sử dụng file này bạn có thể cấu hình trong config/database.php
Ở đây mình sẽ kết nối với database tên congnghe5s_db
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=congnghe5s_db DB_USERNAME=root DB_PASSWORD=
Trong database này mình sẽ tạo 1 bảng product với các trường như hình và chèn 1 vài dòng để test :)
Bây giờ chúng ta bắt đầu được rùi!
Trong route tạo 1 URL để test nhé
Route::get('demo-querybuilder', 'DemoController@queryBuilder' );
Trong controller DemoController tạo hàm queryBuilder:
public function queryBuilder(){ //Lấy tát cả dữ liệu trong bảng Product $data = DB::table('product')->get(); // Hàm xuất dữ liệu như var_dump trong php thuần vậy ^^! dd($data); }
cuối cùng là xem thành quả khi vào link http://localhost/congnghe5s-laravel/demo-querybuilder
Dưới đây là 1 số hàm khác thông dụng trong Query Builder
//Chọn cột $product = DB::table('product')->select('name')->get(); //Chọn với điều kiện $product = DB::table('product')->where('id',2)->get(); //Chọn với 1 trong 2 điều kiện $product = DB::table('product')->where('id',1) ->orWhere('status',1) ->get(); //Sắp xếp kết quả trả về $product = DB::table('product')->orderBy('id','DESC')->get(); //Giới hạn kết quả trả về bỏ qua 2 phần tử đầu -> lấy 1 phần tử tiếp theo $product = DB::table('product')->skip(2)->take(1)->get(); // Điều kiện nằm giữa A và B $product = DB::table('product')-> whereBetween('id',[1,2])->get(); // Điều kiện không nằm trong khoảng A và B $product = DB::table('product')-> whereNotBetween('id',[1,2])->get(); //Điều kiện kết quả nằm trong mảng $product = DB::table('product')-> whereIn('id',[1,2])->get(); // Xoá dữ liệu có id = 2 DB::table('product')->where('id', 2)->delete();
Qua bài này chắc các bạn đã có thể kết nối Laravel với CSDL 1 cách dễ dàng đúng ko?
Ngoài Query Builder, Laravel còn cung cấp cho bạn 1 thư viện Eloquent ORM tuyệt vời để kết nối, phần này mình sẽ nói trong bài sau nhé!
Chúc các bạn thành công!