Đăng bởi:
Nguyễn Anh TuấnĐăng ngày:
Mar 26, 2021Đăng ở:
Tin Tức Công NghệEloquent ORM và QueryBuilder là gì?
Mình tin chắc rất nhiều anh em đã làm việc rất lâu với Laravel, có thể dùng rất nhiều đến cả 2 thứ này nhưng không hề để ý khái niệm chính xác nó là gì? Vậy Eloquent ORM và QueryBuilder là gì?
- Trong Laravel, có 2 cách truy vấn đến database mà chúng ta hay thường dùng đó chính là Eloquent ORM và QueryBuilder.
I. Khái niệm.
1. Eloquent là gì?
- Eloquent được Laravel cung cấp để lập trình viên tương tác với database 1 cách rễ ràng và đơn giản. Cụ thể, Eloquent đi kèm theo Laravel được cung cấp ActiveRecord đầy đủ. Mỗi 1 bảng ở database sẽ được ánh sạ với 1 model, và model này được sử dụng để tương tác với bảng.
2. QueryBuilder là gì?
- QueryBuilder được Laravel cung cấp 1 giao diện thuận tiện giúp lập trình viên dễ dàng chạy các truy vấn tới database. Nó có thể được sử dụng để thực thi hầu hết các thao tác về database.
II. Cách sử dụng
1. Eloquent
Để sử dụng được eloquent, chúng ta cần tạo 1 model tương ứng với bảng trong database. Ví dụ như mình có 1 bảng là User, thì các bạn cần tạo 1 model là User (Cú pháp cmd để tạo model nhanh cho bạn không nhớ hoặc chưa biết là PHP artisan make model Namemodel
). Lưu ý là mỗi eloquen đều phải extend Illuminate\Database\Eloquent\Model
vào nhé.
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'users';
}
$user = User::all();
$user = DB::table('users')->where('status',1)->get();
Với câu lệnh này, truy vấn trả về cho bạn 1 mảng dữ liệu object StdClass.
III. So sánh QueryBuider và Eloquent
- Thời gian thực hiện truy vấn của QueryBuider nhanh hơn Eloquent. Lí do là Eloquent phải thêm 1 lớp trong ứng dụng và yêu cầu truy vấn SQL. Vậy tại sao còn sinh ra Eloquent, có nên sử dụng Eloquent không? Câu trả lời là có bạn nhé.
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
protected $table = 'products';
public function getPrice($value = '') {
if($this->price != '') {
return format_price($this->price,$value);
}else{
return 'Liên hệ';
}
}
public function format_price($price) {
if ($price == 0) {
return "Liên hệ";
}else{
return number_format($price, '.', '.').' VND';
}
}
}
2. Ưu điểm
- QueryBuider
- Eloquent
3. Nhược điểm
- QueryBuider
- Eloquent
4. Bảo mật
- Query builder và Eloquent đều sử dụng : 'PDO parameter binding' nên sẽ giúp chúng ta tránh được lỗi sql injection.
Như vậy, qua bài viết này mình đã giới thiệu và giúp các bạn tìm hiểu về 2 cách truy vấn trong Laravel là Eloquent và QueryBuider. Hi vọng qua bài viết này sẽ giúp các bạn nhớ rõ khái niệm QueryBuider là Eloquent nhé. Chứ đừng như mình hôm nọ bị đứa bạn hỏi lòe gà mà không nhớ 😇
-- Anh Tuấn --
Bình luận
Để lại bình luận
Email và số điện thoại sẽ không được công khai. Những trường bắt buộc được đánh dấu *