How to use groupby having with DB::raw in Laravel Query Builder?
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.
Array
(
[0] => stdClass Object
(
[id] => 2
[title] => Itsolutionstuff.com
[min_quantity] => 10
[total_quantity] => 5
)
)

Hardik Savani
I'm a full-stack developer, entrepreneur and owner of Aatman Infotech. I live in India and I love to write tutorials and tips that can help to other artisan. I am a big fan of PHP, Laravel, Angular, Vue, Node, Javascript, JQuery, Codeigniter and Bootstrap from the early stage. I believe in Hardworking and Consistency.