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

Strategic Certified FinOps Engineer integrates governance with cloud operations

Introduction The shift to cloud computing has fundamentally altered how businesses manage infrastructure, but it has also introduced significant financial complexities that many engineering teams struggle to…

Read More

Certified FinOps Manager Knowledge for Cloud Financial Governance

Introduction The shift toward cloud-native infrastructure has brought undeniable speed, but it has also introduced significant financial complexity. The Certified FinOps Manager is a professional designation designed…

Read More

Smart Career Growth Through Certified FinOps Architect Learning Journey

Introduction The Certified FinOps Architect is a professional certification designed to help engineers, cloud professionals, and managers optimize cloud financial operations and cost efficiency. This guide is…

Read More

CDOM – Certified DataOps Manager Learning Path for Modern Data Professionals

Introduction The CDOM – Certified DataOps Manager is a professional designation designed to bridge the gap between data engineering and operational excellence. This guide is written for…

Read More

Professional development journey using CDOA – Certified DataOps Architect

Introduction The CDOA – Certified DataOps Architect is a professional designation designed to address the unique challenges of managing and scaling data delivery in cloud-native environments. This…

Read More

Achieve Data Reliability with CDOE – Certified DataOps Engineer Program

Introduction The CDOE – Certified DataOps Engineer is established as a critical benchmark for professionals aiming to master the intersection of data engineering and operational excellence. This…

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