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

CItyTrader's avatar

Convert SQL query to Laravel QUery Builder

Please can someone help me convert the query below to a LAravel query builder

"select `products`.*, (select count(*) from `order_items` where `products`.`id` = `order_items`.`product_id`) as `order_items_count` from `products` where `products`.`deleted_at` is null order by `order_items_count` desc limit 8 ◀"
0 likes
6 replies
Sinnbeck's avatar
DB::table('products')
->select('products.*', ' as order_items_count')
->whereNull('products.deleted_at')
->orderBy('order_items_count','desc')
->limit(8)
->get();

Converted at https://sql2builder.github.io/

Sinnbeck's avatar

@CItyTrader Yeah it isn't perfect that converter so you need to tweak it a bit

DB::table('products')
->selectSub(DB::table('products')->selectRaw('count(*)'), 'order_items_count')
->whereNull('products.deleted_at')
->orderBy('order_items_count','desc')
->limit(8)
->get();

And you learn it by practicing. The more you use laravel the better you get at it

CItyTrader's avatar

@Sinnbeck it didn't work. This is the error

Call to undefined method Illuminate\Database\Query\Builder::toQuery()

Please or to participate in this conversation.