laravel-daily 3 months ago
Povilas Korop #Web Development

Laravel Code Review | Tests, Readability and Eloquent

I received a code snippet for review on what can be improved. First, let's write automated tests to ensure the code works, and then make some changes for readability and performance.

When you do User::has('overdueInvoices')->get() , the 'overdueInvoices' relationship is not being eager loaded.

Same thing with the invoice.items relationship. Also, checking if an item is a product could be done in the query itself.


It's ugly, but I think there would be a performance gain from querying the users in the following way:


$users = User::query()

            ->has('overdueInvoices')

            ->with([

                 'overdueInvoices.items' => function ($query) {

                 $query->where('is_product', true);

                }

           ])

           ->get();


Regards,

Inti Pontt


Thanks, valuable improvement!

I'm glad when the visitors more valuable content to my own tips.

I will put this comment as a pinned one.


Povilas Korop
explaining laravel