Laravel Withsum() and Withcount() Eloquent Method Example

Sep 22, 2022 . Admin



Hello Friends,

This example is focused on the laravel withsum() and withcount() eloquent method example. In this article, we will implement a withsum laravel example. This tutorial will give you a simple example of laravel withSum() example. We will look at an example of laravel withCount() example.

Here i will give you very simple example of how to use withSum() and withCount() with laravel relationship eloquent. we will create Category and Product and how you can add relationship and get it.

You can use this example with laravel 6, laravel 7, laravel 8, and laravel 9 versions.

Let's see example with output:

Category Model:
<?php
  
namespace App\Models;
  
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  
class Category extends Model
{
    use HasFactory;
  
    /**
     * Get the comments for the blog post.
     */
    public function products()
    {
        return $this->hasMany(Product::class);
    }
}
Product Model:
<?php
  
namespace App\Models;
 
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  
class Product extends Model
{
    use HasFactory;
  
    protected $fillable = [
        'name', 'price'
    ];
}
withSum() Example:
<?php
  
namespace App\Http\Controllers;
  
use App\Models\Category;
  
class SignaturePadController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $categories = Category::select("id", "name")
                        ->withSum('products', 'price')
                        ->get()
                        ->toArray();
 
        dd($categories);
    }
}
Output:
Array

(

    [0] => Array

        (

            [id] => 1

            [name] => Mobile

            [products_sum_price] => 330

        )

    [1] => Array

        (

            [id] => 2

            [name] => Laptop

            [products_sum_price] => 410

        )

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

(

    [0] => Array

        (

            [id] => 1

            [name] => Mobile

            [products_count] => 3

        )

    [1] => Array

        (

            [id] => 2

            [name] => Laptop

            [products_count] => 2

        )

)

I hope it can help you...

#Laravel