ORM, Query Builder Laravel
ORM và querybuilder:
Query builder cung cấp các phương thức thuận tiện truy vấn DB . nhưn thay vì query như bình thường là
vd : where id = 1 thì querybuilder sẽ không truyền trực tiếp : mà truyền qua param tránh trường hợp bị sql injection : vd : where id = ? (giá trị truyền vào sẽ đc validate và truyền vào vị trí ? )
ORM (eloquent ORM ) đi kèm với laravel
- Cũng dùng để làm việc với DB như query builder nhưng nó đơn giản hơn và dễ sử dụng hơn
- Mỗi table trong DB sẽ được ánh xạ 1 : 1 với 1 model
2 cách đều có khả năng phòng chống sql injection nhưng check trên các trang web thì thấy ORM bảo mật tốt hơn => khuyên dung ORM
-Một khó khăn trong việc sử dụng ORM so với querybuilder là nếu SQL phức tạp mà ORM không đáp ứng được thì ta phải sử dụng DB:raw hoặc query builder
DB Raw Query DB::raw() thường sử dụng select còn lại thì hạn chế
->select(DB::raw('count(id) as email_count'), 'email')
- Hiệu suất :
Querybuilder truy vấn nhanh hơn ORM vì :
- ORM phải thêm lớp trong ứng dùng và cần nhiều truy vấn SQL
Nhưng vẫn cần thiết dùng ORM vì
- Tạo mối quan hệ rõ ràng và rành mạch, cú pháp đơn giản
- Trong trường hợp thay đổi DB thì ORM sẽ cập nhật dễ dàng hơn.
vd :
Query builder :
$users = DB::table('users')->get();
ORM :
$users = User::all();
Hoặc ta có thể kết hợp ORM và query builder:
$user = User::where('id',1)->get();
ref :
https://viblo.asia/p/so-sanh-giua-eloquent-orm-va-querybuilder-trong-laravel-maGK7MG9lj2