-Trước đây khi làm việc với PHP thuần, để tương tác với database các bạn sẽ cần phải kết nối với database và viết những câu truy vấn hết sức là phức tạp để gọi được dữ liệu ra. Nhưng khi sử dụng các famework đặc biệt là Laravel thì các bạn sẽ không phải lo về điều đó nữa, bởi Laravel có cung cấp cho chúng ta một chức năng rất hay là Query Builder.
1, Cấu hình database.
-Trước tiên để sử dụng được 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.
-Để cấu hình Database các bạn cần mở file .env lên và cấu hình như sau.
APP_ENV=local APP_KEY=base64:w6dZccXCvdehAax2NYUt6f/igtsyw7QTQCx2eGEQBgI= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_USERNAME=root DB_PASSWORD= BROADCAST_DRIVER=log CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null PUSHER_APP_ID= PUSHER_KEY= PUSHER_SECRET=
-Chú thích:
- DB_HOST : Là server chứa mysql của bạn.
- DB_PORT: Là cổng post của server Mysql của bạn (thường để mặc định là 3306).
- DB_DATABASE: Là tên database của bạn.
- DB_USERNAME: Là username để truy cập vào database của bạn.
- DB_PASSWORD: Là password để truy cập vào database của bạn.
2, Sử dụng Query Builder.
-Sau khi đã cấu hình được database (ở phần trên). Thì giờ mọi người bắt đầu thực hành truy vấn Sql với Query Builder nhé.
Lấy tất cả dữ liệu trong bảng.
-Cú Pháp:
DB::table('tablename')->get()
VD: Lấy tất cả dữ liệu trong bảng tbl_product.
Route::get('/', function () { $data=DB::table('tb_product')->get(); print_r($data); });
Kết quả:
|
Select cột trong bảng.
-Cú pháp:
DB::table('tablename')->select('columnfirst','columnsecond')->get();
Select có điều kiện.
-Cú pháp:
+Điều kiện bằng:
DB::table('tablename')->where('column','filter')->get();
+Điều kiện lớn hơn:
DB::table('tablename')->where('column','>','filter')->get();
+Điều kiện nhỏ hơn:
DB::table('tablename')->where('column','<','filter')->get();
+Điều kiện khác:
DB::table('tablename')->where('column','<>','filter')->get();
+Điều kiện lồng:
VD:
$users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();
Truy vấn tìm kiếm.
DB::table('tablename')->where('column','like','filter')->get();
// vd : DB::table('product')->where('name','like','%Sách%')->get();
Join bảng.
$users = DB::table('users')->join('contacts', 'users.id', '=', 'contacts.user_id')->get();
+Left join:
$users = DB::table('users')->leftjoin('contacts', 'users.id', '=', 'contacts.user_id')->get();
Unions.
$first = DB::table('users') ->whereNull('first_name'); $users = DB::table('users') ->whereNull('last_name') ->union($first) ->get();
OrderBy.
$users = DB::table('users') ->orderBy('name', 'desc') ->get();
Random.
$randomUser = DB::table('users') ->inRandomOrder() ->first();
GroupBy/having.
$users = DB::table('users') ->groupBy('account_id') ->having('account_id', '>', 100) ->get();
Thêm (insert).
DB::table('users')->insert( ['email' => '[email protected]', 'votes' => 0] );
Sửa (update).
DB::table('users') ->where('id', 1) ->update(['votes' => 1]);
Xóa (delete).
DB::table('users')->delete(); //hoặc DB::table('users')->where('votes', '>', 100)->delete();
3, Chú ý.
-Để sử dụng được các câu truy vấn trên bắt buộc các bạn phải:
- Kết nối với cơ sở dữ liệu.
- Nếu truy vấn trong controllers thì các bạn cần phải khai báo use IlluminateSupportFacadesDB; còn trong Route thì không cần.
4, Lời kết.
-Bài hôm nay khá là dài đúng không các bạn? Mình cũng thấy thế, nhưng ở phía trên mới là một số câu lệnh truy vấn cơ bản trong Query Builder còn một số câu truy vấn nâng cao nữa các bạn muốn tham khảo có thể xem tại đây nhé.