Laravel withCount() with Where Condition Example

In this tutorial, we will explore how to use the withCount() method in Laravel with a where condition. We will cover the step-by-step process of creating a relationship between models and applying withCount() with a condition.

Let’s consider an example involving two models: Sharedata and Order. We’ll demonstrate how to establish a relationship between them and retrieve the count of related products with a specific condition.

To get started, follow these steps:

Step 1: Define the Relationship In your Sharedata model, define the relationship with the Order model. For example:

sharedata Model:

<?php
  
namespace App\Models;
  
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  
class Sharedata extends Model
{
    use HasFactory;
  
    /**
     * Get the comments for the blog post.
     */
    public function orders()
    {
        return $this->hasMany(Order::class);
    }
}

Order Model:

<?php
  
namespace App\Models;
 
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  
class Order extends Model
{
    use HasFactory;
  
    protected $fillable = [
        'name', 'price', 'is_active'
    ];
}

withCount() Example:

<?php
  
namespace App\Http\Controllers;
  
use App\Models\Category;
  
class CartController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $share = Sharedata::select("id", "name")
                        ->withCount('orders')
                        ->get()
                        ->toArray();
 
        dd($share);
    }
}

Output:

Array

(

    [0] => Array

        (

            [id] => 1

            [name] => Mobile

            [orders_count] => 3

        )

    [1] => Array

        (

            [id] => 2

            [name] => Laptop

            [orders_count] => 2

        )

)

withCount() with Where Condition Example:

<?php
  
namespace App\Http\Controllers;
  
use App\Models\Category;
  
class SignaturePadController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $share = Sharedata::select("id", "name")
                        ->withCount([
                            'orders as active_orders_count' => function ($query) { 
                                $query->where('is_active', '1');
                            },
                        ])
                        ->get()
                        ->toArray();
 
        dd($share);
    }
}

Output:

Array

(

    [0] => Array

        (

            [id] => 1

            [name] => Pendrive

            [active_orders_count] => 2

        )

    [1] => Array

        (

            [id] => 2

            [name] => Laptop

            [active_orders_count] => 2

        )

)

I hope it can help you…

Related Posts

The Complete SEO Playbook for AI Guest Post Generation and Publishing

Introduction Search engine optimization relies heavily on authority, relevance, and trust. While search algorithms continually evolve, securing high-quality backlinks through strategic content placement remains a foundational ranking…

Read More

Top Digital Marketing Workflow Management Tools for Agencies

Introduction Managing a modern digital marketing stack often feels like juggling dozens of disconnected software subscriptions. Marketing managers, agency owners, and SEO specialists frequently find themselves jumping…

Read More

AI Prompt Management Tools: From Basic Prompts to High-Value Digital Assets

Generative artificial intelligence has fundamentally altered how modern enterprises, creative teams, and technical engineers operate. However, as organizations increase their reliance on large language models (LLMs), a…

Read More

Automated Payment Management Software for Modern Enterprises

Finance operations form the backbone of every enterprise, yet many organizations still struggle with fragmented billing tools, delayed collections, and manual reconciliation. Relying on spreadsheets and disconnected…

Read More

The Complete Guide to Choosing the Best Vehicle Rental Management Software

INTRODUCTION Managing a vehicle rental business manually through spreadsheets, paper ledgers, or messaging apps creates significant operational friction. Rental agency owners face recurring challenges including double bookings,…

Read More

The Ultimate Guide to Predictive Alerts and Data Observability

Introduction In modern data-driven enterprises, data pipelines serve as the central circulatory system of business intelligence, operational analytics, machine learning platforms, and executive decision-making. However, as data…

Read More
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x