Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

amrsoft's avatar

turn mysql query to Laravel

Hello , i have this query , can anyone help me to make same using laravel way

thanks

SELECT `categories`.`id`,`categories`.`cat_name`,COUNT(`tenders`.`cat_id`)

FROM `categories`

left JOIN `tenders` ON `tenders`.`cat_id` = `categories`.`id`

WHERE `categories`.`active`=1

GROUP BY `categories`.`id`

0 likes
3 replies
kfirba's avatar

@amrsoft Hey.

I think this should work:

Category::leftJoin('tenders', 'tenders.cat_id', '=', 'categories.id')
    ->where('categories.active', 1)
    ->groupBy('categories.id')
    ->select('categories.id', 'categories.cat_name', \DB::raw('count(tenders.cat_id)'))
    ->get();

The above code produces the following sql query:

select `categories`.`id`, `categories`.`cat_name`, count(tenders.cat_id) from `categories` left join `tenders` on `tenders`.`cat_id` = `categories`.`id` where `categories`.`active` = ? group by `categories`.`id`
jlrdw's avatar

@amrsoft why?

If you have a working query, you realize at runtime it's converted right back to your original query.

Please or to participate in this conversation.