Tìm hiểu về eloquent và query builder trong Laravel

Trong bài này mình xin giới thiệu với các bạn về EloquentQuery builder, khi nào nên dùng EloquentQuery builder.

Trong Laravel hiện đang sử dụng query chủ yếu 2 kiểu là EloquentQuery builder.

Eloquent được laravel hay chính xác hơn là ông thần tây giới thiệu và sử dụng trong laravel dùng để query và truy vấn đến DB 1 cách tiện lợi và đơn giản hơn. Tức là mỗi thằng(bảng database) này nó được Laravel được cung cấp ActiveRecord và ánh xạ đến 1 ông cháu Model và tất nhiên mỗi ông cháu Model này được tương tác với bảng.

Còn Query builder được sử dụng để thực thi hầu hết những thao tác về database trong ứng dụng và làm việc với tất cả các thao tác với database được hỗ trợ, nhìn chung thì cũng xịn - đệp.

  1. Về bảo mật:
  • Eloquent và thằng Query builder đều có tính bảo mật tốt khi cả 2 đều được sử dụng PDO paramater binding cho việc phòng và chống SQL injection.
  1. Về cách sử dụng (mời quí zị đọc thêm trên document quá đầy đủ luôn :smile: )
  • Eloquent dễ sử dụng hơn khi truy xuất dữ liệu, thay đổi DB các thứ, cú pháp ngắn gọn, đơn giản, tiện dùng hơn so với thằng QueryBuilder.
  • Eloquent có vẻ liên kết các bảng db với nhau dễ và ok hơn so với Query builder.
  • Khi mà câu query sử dụng Eloquent quá phức tạp không đáp ứng được thì nên sử dụng Query builder.
  1. Về hiệu suất:
  • Tốc độ query của Query builder nhanh hơn so với Eloquent (nhanh hơn bnhieu thì không biết :smile: , đối với dữ liệu lớn thì mưới có thể thấy rõ hơn điều này), và Query builder không cần tạo model vẫn có thể query bình thường. Lý do là thằng Eloquent nó có cần tạo 1 cái model trước khi truy vấn. Nếu không được import model của thằng cần truy vấn vào thì nó sẽ lỗi.
  • Tuy nhiên không vì thế mà chúng ta hạn chế dùng Eloquent. Theo mình thấy, thì chúng ta nên sử dụng song song 2 thằng này 1 cách hợp lý. Khi mà các bảng có ít record thì về tốc độ hay hiệu suất thì nó không khác nhau, chênh lệnh là mấy. Nên chỉ khi có rất nhiều bản ghi thì ta nên dùng Query builder còn lại thì nên dùng Eloquent vì tính dễ dùng, dễ nhớ, tiện lợi… bla :vulcan_salute:
  1. Tính tái sử dụng:
  • Eloquent có khả năng tái sử dụng cao hơn, còn Query builder thì không.

Tổng kết: Mình vừa chia sẻ 1 xíu về EloquentQuery builder trong laravel. Nhưng cũng hơi khó hình dung khi mình không thêm example. Cảm ơn các bạn đã theo dõi bài này! Chúc các bạn học tốt! :slight_smile: