Làm thứ làm cho Laravel Request của bạn thú vị hơn

PHP Laravel Query Builder – sử dụng Database cơ bản

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é 😀

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Bình luận qua Facebook