We most probably require to use group by having because if you work on small project then it’s not need to use generally. But if you work with big project like e-commerce, social or ERP level project then you may require to use having clause.
you can also use groupby having with db raw in laravel 6, laravel 7, laravel 8, laravel 9 and laravel 10 app.
having clause, we can use simply if we have to compare with number or static value like as bellow:
->having("total_quantity","<",10)
But we need to compare with 10 instead of column name then it can’t directly use column name. At that time we should use DB::raw() with column name.
In this example i want to show minimum quantity items, I have two tables one items and another one items_count both mysql table layout is here:
items table:
items_count table:
I need to get that product has less quantity to min_quantity of items table, so we check get that items using bellow query:
Example
$items = DB::table("items")
->select("items.id","items.title"
,"items.min_quantity"
,DB::raw('SUM(items_count.quantity) as total_quantity'))
->join("items_count","items_count.id_item","=","items.id")
->groupBy("items.id")
->having("total_quantity","<",DB::raw("items.min_quantity"))
->get();
print_r($items);
You will find bellow output get only items no. 2.
Read Also: How to use groupby having with DB::raw in Laravel Query Builder?
Array
(
[0] => stdClass Object
(
[id] => 2
[title] => Itsolutionstuff.com
[min_quantity] => 10
[total_quantity] => 5
)
)