Get list of all products

Stefan Bogdanescu
Founder & Senior Architect · 30 June 2026

How to Display All Products in Your Laravel E-commerce Store

When building an e-commerce store using Laravel, it’s common to want to display all products on a single page or generate a product listing. This is especially useful for sites that don’t have a hierarchical category structure. Here’s how you can achieve this effectively.

1. First, ensure your relationships are set up correctly

In your Product model, make sure you have the following relationship defined:

public function categories()
{
    return $this->belongsToMany(Category::class);
}

And in your Category model:

public function products()
{
    return $this->belongsToMany(Product::class);
}

2. Use Laravel’s eager loading for optimized performance

To fetch all the product information without hitting the database multiple times, use with() to eagerly load the categories.

$products = App\Models\Product::with('categories')->get();

This retrieves all products and their associated categories in a single query.

3. Displaying the product list

In your Blade view, you can loop through the $products collection to display each item:

@foreach ($products as $product)
    <div class="product">
        <h2>{{ $product->name }}</h2>
        <p>Price: ${{ $product->price }}</p>
        @foreach ($product->categories as $category)
            <span class="category">Category: {{ $category->name }}</span>
        @endforeach
        <!-- Add more fields as needed -->
    </div>
@endforeach

This code snippet assumes that you have a Product model with properties like name, price, and categories. The inner loop displays the associated categories for each product.

4. Pagination for large product lists

If your store has a large number of products, consider implementing pagination to improve user experience:

$products = App\Models\Product::with('categories')->paginate(10);

This fetches 10 products per page. In your view, use Laravel’s built-in pagination helpers to display page links.

5. Styling the product listing

To make your product list visually appealing, you can apply CSS styles in your Blade file or an external stylesheet:

<style>
    .product {
        border: 1px solid #ddd;
        padding: 20px;
        margin-bottom: 15px;
    }

    h2 {
        font-size: 1.3em;
        color: #444;
    }
</style>

You can customize the styles to match your site’s design.

Conclusion

Displaying all products in a Laravel e-commerce store is straightforward once you understand how to use Laravel’s relationship methods and collection functions effectively. Remember to:

  • Set up correct relationships between models.
  • Use eager loading for performance optimization.
  • Apply proper styling for an appealing user interface.
  • Implement pagination for large product lists.

By following these best practices, you can create a clean, efficient, and visually pleasing product listing for your Laravel e-commerce store. For more advanced customizations and features, check out the Laravel Company blog for in-depth tutorials on Laravel development.

Our network