Tiếp tục về PHP Laravel Query Builder nhé 😀
6/ Tính toán (Aggregates)
Cũng như SQL Query, DB Laravel cũng có hỗ trợ các hàm tính toán như sau cho các bạn:
// Đếm toàn bộ số rows của table users $users = DB::table('users')->count(); // Lấy ra giá trị max của column price trong table order $price = DB::table('orders')->max('price'); // Lấy ra giá trị min của column price trong table order $price = DB::table('orders')->min('price'); // Tính trung bình của column price trong table order $price = DB::table('orders')->avg('price'); // Tính tổng votes của toàn bộ rows trong table users $total = DB::table('users')->sum('votes');
Đối với các biến nhận giá trị từ các hàm count, max, in, avg, sum thì chúng ta sử dụng biến đó luôn, biến đó sẽ được nhận hẳn giá trị.
7/ Thêm (Insert)
Thêm vào table cũng rất dễ các bạn, chúng ta có 2 hàm như sau:
Thêm/Insert bình thường:
Mình sẽ vd thêm vào column users nhé:
DB::table('users') ->insert([ 'name' => 'Seth Phat', 'email' => '[email protected]', 'phone' => '0901234567', 'age' => 21 ]);
Có nghĩa hàm insert(assoc_array) ta truyền vào 1 assoc array, trong đó tên của array sẽ là tên cột trong MySQL, còn truyền vào sẽ là giá trị mình cần thêm.
“ten_column” => $giaTriTruyenVao
Thêm/Insert và trả về ID của rows mình vừa insert:
Cũng tương tự như trên, mà ta dùng hàm insertGetId thôi 😀
$id = DB::table('users') ->insertGetId([ 'name' => 'Seth Phat', 'email' => '[email protected]', 'phone' => '0901234567', 'age' => 21 ]);
Biến $id sẽ chứa id rows ta vừa nhập, ta có thể sử dụng ngay.
(Optional) Insert multiple rows
Ngoài ra chúng ta cũng có thể nhập nhiều rows 1 lúc bằng cách truyền vào 1 mảng assoc 2 chiều như sau:
$insert = [ ['name' => 'Phat', 'email' => '[email protected]', 'phone' => '0123', 'age' => 21], ['name' => 'Seth', 'email' => '[email protected]', 'phone' => '4567', 'age' => 21], ['name' => 'Seth Phat', 'email' => '[email protected]', 'phone' => '12344', 'age' => 21] ]; DB::table('users')->insert($insert);
Rất đơn giản phải ko nào 😀
8/ Sửa/Cập nhập (Update)
Đối với cập nhập, ta cũng sử dụng tương tự Insert mà thêm Where nữa (sửa fải sửa ở đâu chứ :D)
Cập nhập thông tin: Update(assoc_array)
DB::table('users') ->where('id', 1) ->update([ 'name' => 'Seth Phat update', 'phone' => '090xxxxxxx' ]);
Column nào cần update thì ta thêm vào nhé :D, nếu update toàn bộ thì nhập vào toàn bộ column thôi
Cập nhập các thông tin tăng giảm số: increment(column, by = 1), decrement(column, by = 1)
Mặc định nếu ta xài increment/decrement mà ko có tham số thứ 2(int) là tăng/giảm 1 nhé.
DB::table('users')->increment('age'); DB::table('users')->increment('age', 5); DB::table('users')->decrement('age'); DB::table('users')->decrement('age', 5);
Tăng giảm tuổi trong user, khi ta incre/decre 5 thì nó sẽ tăng 5, mặc định ko điền sẽ là 1
Ngoài ra trong lúc increment/decrement chúng ta cũng có thể thay đổi giá trị của column khác vào tham số thứ 3
increment/decrement(column, by = 1, assoc_array);
DB::table('users') ->where('id', 1) ->increment('age', 1, ['name' => 'Phat']);
9/ Xóa (Delete)
Xóa thì ta xài tương tự như select thôi:
Xóa với điều kiện (Delete with Where)
DB::table('users') ->where('age', '<', 18)->delete();
Xóa users nào có tuổi dưới 18
Xóa toàn bộ rows (Delete All)
DB::table('users')->delete();
Toàn bộ rows sẽ dc xóa, nhưng id increment vẫn tăng (VD user cuối cùng của bạn có ID = 10, khi xóa hết và nhập user mới nó vẫn lên 11 chứ ko về 1)
Xóa toàn bộ (Truncating)
Xóa này khác delete all là nếu xóa kiểu truncate, nhập mới thì ID sẽ bắt đầu lại từ 1.
DB::table('users')->truncate();
Vậy là xong toàn bộ PHP Laravel Query Builder đơn giản rồi
Các bài học trước: http://sethphat.com/sp-tag/laravel
Tìm hiểu thêm tại: https://laravel.com/docs/5.0/queries
Chúc các bạn học tốt và cám ơn các bạn đã quan tâm nhé 😀