2014-06-17 20 views
9

Điều này nghe có vẻ giống như một câu hỏi rõ ràng nhưng tôi chỉ muốn nhận được một số bảo đảm.Laravel háo hức tải vs rõ ràng tham gia

Sử dụng chức năng tải mong muốn của Laravel, từ những gì tôi hiểu nó sẽ tạo ra hai truy vấn để trả lại toàn bộ danh sách kết quả liên quan (nói nếu bạn đang làm việc với hai bảng). Tuy nhiên, và sửa tôi nếu tôi sai, sử dụng câu lệnh nối sẽ để lại cho bạn chỉ một truy vấn, tạo một chuyến đi ít vòng tới cơ sở dữ liệu của máy chủ (MySQL) và là truy vấn hiệu quả hơn.

Tôi biết rằng bạn có thể viết truy vấn tham gia trong Laravel, điều này thật tuyệt, vì vậy tôi không thể giả định rằng khi truy xuất dữ liệu liên quan từ hai hoặc nhiều bảng, tôi không bận tâm đến việc tải dữ liệu và thay vào đó viết báo cáo tham gia của riêng tôi?

****** Sửa *******

Coming lại vấn đề này một năm sau đó, tôi muốn nói theo ý kiến ​​cá nhân của tôi, chỉ cần viết các truy vấn, liệu, và viết chúng cũng .

Trả lời

9

Bạn hoàn toàn đúng về hiểu biết của mình. Nếu bạn viết câu lệnh join để tham gia hai hoặc nhiều bảng bằng cách sử dụng join() trong Laravel thì nó chỉ tạo một truy vấn khi sử dụng mô hình Eloquent với kỹ thuật eager loading yêu cầu nhiều truy vấn.

nên tôi không bận tâm với tải háo hức và thay vào đó chỉ cần viết của riêng tôi tham gia báo cáo

Trên thực tế, eager loading là một kỹ thuật để tải mô hình liên quan sử dụng Eloquent ORM dễ dàng và nó sử dụng Query Builder đằng sau hiện trường và cho phép bạn sử dụng Eloquent Model Object mà không tự tạo truy vấn và đại diện cho dữ liệu khác nhau, Sử dụng Eloquent ORM bạn có thể tương tác trực tiếp với mô hình đại diện cho các đối tượng trong cơ sở dữ liệu với các tính năng bổ sung. Quan trọng nhất, nó ẩn sự phức tạp của SQL và cho phép bạn thực hiện truy vấn cơ sở dữ liệu theo kiểu OOP sử dụng mã PHP.

Nhưng khi bạn tự gọi join phương pháp mà thuộc về Illuminate\Database\Query\Builder lớp sau đó bạn đang sử dụng Query Builder trực tiếp mà yêu cầu bạn viết mã hơn và đòi hỏi kiến ​​thức hơn về sql query bởi vì nó không ẩn các truy vấn từ bạn mà còn giúp bạn thực hiện truy vấn chính xác hơn, nhưng bạn vẫn thực hiện truy vấn.

Cả hai đều khác nhau và chúng hoạt động khác nhau. Bạn có thể tìm kiếm trên Google bằng cụm từ ORM vs Query Builder.

+1

Cảm ơn thông tin chi tiết! Tôi sẽ nghiên cứu thêm một chút về vấn đề này. – Meowts

Các vấn đề liên quan