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

Enterprise Delivery Pipelines: Technical Strategies for DevOps Training China

Introduction Software development teams frequently experience severe delivery bottlenecks when handoffs between developers and operations engineers rely on manual interventions. Code that runs reliably on a developer’s…

Read More

Inside the Overseas Work Visa for Indians: A Relocation Advisor’s Strategic Playbook

Indian professionals looking to build an international career quickly discover that finding an overseas job is only half the battle. Securing the legal right to work in…

Read More

The Vital Role of Digital Inclusion Programs in Advancing Modern Social Welfare

Introduction When local governments and public institutions digitize vital civic resources—from municipal court filings and welfare applications to public housing portals—they often assume the broader public can…

Read More

Best Weekend Events in Delhi: How to Find and Plan Outings

Introduction Being a student or an early-career creator in the capital means having endless curiosity but operating within realistic financial boundaries. You want to immerse yourself in…

Read More

Top DataOps Pipeline Testing Tools for Modern Data Teams

Introduction Modern data pipelines are complex distributed systems. A standard production workflow connects transactional databases, third-party APIs, object storage, streaming queues, transformation layers, cloud data warehouses, and…

Read More

Accelerating Pipeline Root Cause Analysis Using Telemetry and Graph Intelligence

Modern enterprise data architectures rely on an intricate web of batch jobs, streaming brokers, cloud warehouses, and SaaS APIs where standard task monitoring often falls short—a pipeline…

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