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 Future of Computer Operations: How Smart Systems Fix Problems

Every day, millions of people tap smartphone screens to navigate morning traffic, order groceries to their doorsteps, and transfer money between bank accounts in seconds. Behind every…

Read More

How DataOps Improves Alert Accuracy with AI Tools

Data pipelines run constantly to deliver numbers, reports, and dashboards. When something breaks, monitoring systems send alerts to data engineers. But when these notifications ring every ten…

Read More

Core Engineering Skills Needed to Master Data Pipeline Automation Systems

Introduction Imagine building a giant LEGO castle, but someone keeps swapping out your plastic bricks for blocks of melting ice. That is what working with raw digital…

Read More

Continuous Data Validation in DataOps: The Complete Architecture Guide

Continuous data validation is the systematic practice of asserting data correctness, schema consistency, and distribution integrity across every state boundary of an enterprise data pipeline. In DataOps,…

Read More

Implementing XOps: Key Pillars, Common Challenges, and Real-World Solutions

Introduction Modern engineering teams rarely run on pure application code alone. Enterprise software delivery now relies on distributed microservices, complex telemetry pipelines, machine learning inference engines, high-throughput…

Read More

Navigating Urology Treatment: From Early Symptoms to Advanced Care

Introduction Experiencing changes in urinary habits, persistent pelvic discomfort, or sudden kidney pain can feel unsettling. Many individuals delay seeking help because they are uncertain which doctor…

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