Join WhatsApp ChannelJoin Now

Laravel 8 Eloquent Group By Example

Today, i we will show you laravel 8 eloquent group by example. This article will give you simple example of laravel 8 eloquent group by example. you will learn laravel 8 eloquent group by example.

how to use laravel 8 group with raw, laravel group by multiple, laravel 8 group by date, laravel 8 group by sum, laravel 8 group by month and laravel 8 collection group by count.

So let’s follow few step to create example of laravel 8 eloquent group by example.

Laravel 8 Eloquent Group By Example

  • GroupBy with Collection Example
  • Collection Group By Preserve Key
  • Collection Group By with Multiple Columns
  • Collection Group By with Date
  • Collection Group By with Count
  • Collection Group By with Sum

Step 1:- GroupBy with Collection Example

public function index()
{
    $collection = collect([
            'first' => ['id'=>1, 'name'=>'Rahul', 'city' => 'Mumbai', 'country' => 'India'],
            'second' => ['id'=>2, 'name'=>'Sumit', 'city' => 'New York', 'country' => 'US'],
            'third' => ['id'=>3, 'name'=>'Ronak', 'city' => 'Gujarat', 'country' => 'India'],
            'fourth' => ['id'=>4, 'name'=>'Harish', 'city' => 'New York', 'country' => 'US'],
        ]);
    $grouped = $collection->groupBy('country');
 
    dd($grouped);
 
}

Output:

Illuminate\Support\Collection {#294 ▼
  #items: array:2 [▼
    "India" => Illuminate\Support\Collection {#291 ▼
      #items: array:2 [▼
        0 => array:4 [▼
          "id" => 1
          "name" => "Rahul"
          "city" => "Mumbai"
          "country" => "India"
        ]
        1 => array:4 [▼
          "id" => 3
          "name" => "Ronak"
          "city" => "Gujarat"
          "country" => "India"
        ]
      ]
    }
    "US" => Illuminate\Support\Collection {#293 ▼
      #items: array:2 [▼
        0 => array:4 [▼
          "id" => 2
          "name" => "Sumit"
          "city" => "New York"
          "country" => "US"
        ]
        1 => array:4 [▼
          "id" => 4
          "name" => "Harish"
          "city" => "New York"
          "country" => "US"
        ]
      ]
    }
  ]
}

Step 2:- Collection Group By Preserve Key

public function index()
{
    $collection = collect([
            'first' => ['id'=>1, 'name'=>'Rahul', 'city' => 'Mumbai', 'country' => 'India'],
            'second' => ['id'=>2, 'name'=>'Sumit', 'city' => 'New York', 'country' => 'US'],
            'third' => ['id'=>3, 'name'=>'Ronak', 'city' => 'Gujarat', 'country' => 'India'],
            'fourth' => ['id'=>4, 'name'=>'Harish', 'city' => 'New York', 'country' => 'US'],
        ]);
    $grouped = $collection->groupBy('country', True);

    dd($grouped);
 
}

Output:

Illuminate\Support\Collection {#294 ▼
  #items: array:2 [▼
    "India" => Illuminate\Support\Collection {#291 ▼
      #items: array:2 [▼
        "first" => array:4 [▼
          "id" => 1
          "name" => "Rahul"
          "city" => "Mumbai"
          "country" => "India"
        ]
        "third" => array:4 [▼
          "id" => 3
          "name" => "Ronak"
          "city" => "Gujarat"
          "country" => "India"
        ]
      ]
    }
    "US" => Illuminate\Support\Collection {#293 ▼
      #items: array:2 [▼
        "second" => array:4 [▼
          "id" => 2
          "name" => "Sumit"
          "city" => "New York"
          "country" => "US"
        ]
        "fourth" => array:4 [▼
          "id" => 4
          "name" => "Harish"
          "city" => "New York"
          "country" => "US"
        ]
      ]
    }
  ]
}

Step 3:- Collection Group By with Multiple Columns

public function index()
 
{
    $collection = collect([
            'first' => ['id'=>1, 'name'=>'Rahul', 'city' => 'Mumbai', 'country' => 'India'],
            'second' => ['id'=>2, 'name'=>'Sumit', 'city' => 'New York', 'country' => 'US'],
            'third' => ['id'=>3, 'name'=>'Ronak', 'city' => 'Gujarat', 'country' => 'India'],
            'fourth' => ['id'=>4, 'name'=>'Harish', 'city' => 'New York', 'country' => 'US'],
        ]);

        $grouped = $collection->groupBy(function ($item, $key) {
                    return $item['country'].$item['city'];
                });
    dd($grouped);
}

Output:

Illuminate\Support\Collection {#295 ▼
  #items: array:3 [▼
    "IndiaMumbai" => Illuminate\Support\Collection {#291 ▼
      #items: array:1 [▼
        0 => array:4 [▼
          "id" => 1
          "name" => "Rahul"
          "city" => "Mumbai"
          "country" => "India"
        ]
      ]
    }
    "USNew York" => Illuminate\Support\Collection {#293 ▼
      #items: array:2 [▼
        0 => array:4 [▼
          "id" => 2
          "name" => "Sumit"
          "city" => "New York"
          "country" => "US"
        ]
        1 => array:4 [▼
          "id" => 4
          "name" => "Harish"
          "city" => "New York"
          "country" => "US"
        ]
      ]
    }
    "IndiaGujarat" => Illuminate\Support\Collection {#294 ▼
      #items: array:1 [▼
        0 => array:4 [▼
          "id" => 3
          "name" => "Ronak"
          "city" => "Gujarat"
          "country" => "India"
        ]
      ]
    }
  ]
}

Step 4:- Collection Group By with Date

public function index()
{
    $collection = collect([
            ['id'=>1, 'name'=>'Rahul', 'created_at' => '2021-06-02 15:15:00'],
            ['id'=>2, 'name'=>'Sumit', 'created_at' => '2021-07-02 15:16:00'],
            ['id'=>3, 'name'=>'Ronak', 'created_at' => '2021-06-02 15:18:00'],
            ['id'=>4, 'name'=>'Harish', 'created_at' => '2021-07-02 15:10:00'],
        ]);
    $grouped = $collection->groupBy(function($item, $key) {
                    return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $item['created_at'])->format('m/d/Y');
                });

    dd($grouped);
 
}

Output:

Illuminate\Support\Collection {#291 ▼
  #items: array:2 [▼
    "06/02/2021" => Illuminate\Support\Collection {#293 ▼
      #items: array:2 [▼
        0 => array:3 [▼
          "id" => 1
          "name" => "Rahul"
          "created_at" => "2021-06-02 15:15:00"
        ]
        1 => array:3 [▼
          "id" => 3
          "name" => "Ronak"
          "created_at" => "2021-06-02 15:18:00"
        ]
      ]
    }
    "07/02/2021" => Illuminate\Support\Collection {#294 ▼
      #items: array:2 [▼
        0 => array:3 [▼
          "id" => 2
          "name" => "Sumit"
          "created_at" => "2021-07-02 15:16:00"
        ]
        1 => array:3 [▼
          "id" => 4
          "name" => "Harish"
          "created_at" => "2021-07-02 15:10:00"
        ]
      ]
    }
  ]
}

Step 5:- Collection Group By with Count

public function index()
{
    $collection = collect([
            ['id'=>1, 'name'=>'Rahul', 'country'=>'India', 'created_at' => '2021-06-02 15:15:00'],
            ['id'=>2, 'name'=>'Sumit', 'country'=>'India', 'created_at' => '2021-06-02 15:16:00'],
            ['id'=>3, 'name'=>'Ronak',  'country'=>'Us','created_at' => '2021-06-01 15:18:00'],
            ['id'=>4, 'name'=>'Harish', 'country'=>'Us', 'created_at' => '2021-06-01 15:10:00'],
        ]);

    $grouped = $collection->groupBy('country')->map(function ($row) {
                    return $row->count();
                });
    dd($grouped);
}

Output:

Illuminate\Support\Collection {#295 ▼
  #items: array:2 [▼
    "India" => 2
    "Us" => 2
  ]
}

Step 6:- Collection Group By with Sum

public function index()
{
    $collection = collect([
            ['id'=>1, 'name'=>'Rahul', 'country'=>'India', 'amount'=>'100', 'created_at' => '2021-06-02 15:15:00'],
            ['id'=>2, 'name'=>'Sumit', 'country'=>'India', 'amount'=>'200', 'created_at' => '2021-06-02 15:16:00'],
            ['id'=>3, 'name'=>'Ronak',  'country'=>'Us', 'amount'=>'300', 'created_at' => '2021-06-01 15:18:00'],
            ['id'=>4, 'name'=>'Harish', 'country'=>'Us', 'amount'=>'100', 'created_at' => '2021-06-01 15:10:00'],
        ]);

    $grouped = $collection->groupBy('country')->map(function ($row) {
                    return $row->sum('amount');
                });
    dd($grouped);
}

Output:

Illuminate\Support\Collection {#295 ▼
  #items: array:2 [▼
    "India" => 300
    "Us" => 400
  ]
}

Recommended Posts