I ran some tests to compare the performance of Laravel query builder vs Eloquent. With a variety of sql statements, the query builder was considerably faster (select-update-delete-insert).
So, why would someone use Laravel Eloquent instead of the standard query builder?
Asked by Panagiotis Koursaris
Eloquent is Laravel’s implementation of the Active Record paradigm, with all of its advantages and disadvantages.
Active Record is a useful option for performing CRUD operations on a single object, such as creating a new entity with filled properties, saving it to a database, loading a record from a database, or deleting it.
Eloquent features like dirty checking (sending SQL UPDATE only for changed fields), model events (e.g., sending administrative alerts or updating statistics counters when someone creates a new account), traits (timestamps, soft deletes, your custom traits), eager/lazy loading, and so on will help you a lot. You can also use the domain-driven approach to build some business logic in your Active Record entities, such as validation, relationship management, and computations.
However, as you may be aware, Active Record comes with a cost in terms of performance.
There’s nothing to be concerned about when processing a single or a few records. However, in circumstances when you need to read a large number of entries (e.g., for datagrids, reports, batch processing, etc. ), the basic Laravel DB methods are a preferable option.
We use both ways in our Laravel-based applications as needed. To process a single record, we utilize Laravel’s Eloquent, and to obtain data for UI tables, export tasks, and so on, we use DB methods (supported by SQL views with additional database engine specific performance improvements). Eloquent for GET, PUT, POST, DELETE with a key, and DB for GET without a key but with filters, sorting, and paging.
Answered by JustAMartin
Yes, you are correct in some cases. When we have more data and it’s virtually everywhere, data isn’t so small. Then you should use DB Query rather than Eloquent Query.
When it comes to Eloquent vs. DB performance, That’s something I’ve heard.
So, what makes Eloquent so eloquent? Isn’t there any need for that?
The answer is that eloquence is also required. Cause-
// In Eloquent $student = App\Student::find($id); // In DB facade $student = DB::table('student')->where('id', $id)->first();
So, when we utilize Eloquent with DB facades, we should:
Finally, we can see when we should use Database Query and when we should use Eloquent Query.
Editing a Real-Life Situation
Laravel Debugbar (a popular package for checking Eloquent/Database query performance/ execution times) may be used to check the performance of your query.
It’s now up to you to decide. What you’d like to create…
You can see a comprehensive code-by-code comparison of these here: https://devsenv.com/tutorials/laravel-eloquent-vs-db-query-builder-performance-and-other-statistics
Answered by Maniruzzaman Akash
Why Laravel Eloquent:
Answered by Imran
Take a look at the following tables for comparison purposes when it comes to performance and application growth:
Eloquent ORM and Raw SQL are compared in terms of average response time for select operations.
Joins | Average (ms) ------+------------- 1 | 162.2 3 | 1002.7 4 | 1540.0 Result of select operation average response time for Eloquent ORM
Joins | Average (ms) ------+------------- 1 | 116.4 3 | 130.6 4 | 155.2 Result of select operation average response time for Raw SQL
Answered by Mohammad Naji
It’s simply my perspective, not an exhaustive response. In a particular situation, I use whatever is more convenient.
If I come across a package or code written either in eloquent or query builder, I use whatever is being used.
When I design something from scratch, I find query builder to be more straightforward, thus I utilize it more often.
When it comes to Laravel, it appears that the ease and speed with which an app can be developed is more significant than its performance. I like how they make everything really simple, especially for someone who knows very little about php/mysql. Eloquent is sometimes more convenient than query builder. In certain cases, it’s the opposite way around. I believe that the fact that there are so many methods to achieve anything is what makes Laravel so user-friendly.
Answered by Arthur Tarasov
Post is based on https://stackoverflow.com/questions/38391710/laravel-eloquent-vs-query-builder-why-use-eloquent-to-decrease-performance