-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', '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áouse Illuminate\Support\Facades\DB;
còn trongRoute
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é.
Đăng ký nhận tin.
Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!
thanks ad
cu tèo
7 năm trước
thanks ad nhiều
cu tèo 1
7 năm trước
cho mình hỏi ngoài lề chút :)) mình thấy màu code khá đẹp, ad dùng code editor và theme nào vậy ạ ?
Bách
6 năm trước
bài viết khá đầy đủ cảm ơn admin
(có góp ý nhỏ là anh nên nhúng plugin comment fb cho bài viết dễ tương tác hơn)
dương đình thành
5 năm trước
Làm sao để nhìn thấy câu lệnh truy vấn select, insert ... trong laravel ạ
Tran Kim Anh
5 năm trước
Bạn có thể sử dụng phương thức enableQueryLog() và getQueryLog() như sau:
Hoặc dùng package Laravel Debug Bar, hướng dẫn: https://toidicode.com/huong-dan-tich-hop-va-su-dung-laravel-debugbar-package-201.html
Vũ Thanh Tài
5 năm trước