How to do this in Laravel, subquery where in How to do this in Laravel, subquery where in laravel laravel

How to do this in Laravel, subquery where in


Consider this code:

Products::whereIn('id', function($query){    $query->select('paper_type_id')    ->from(with(new ProductCategory)->getTable())    ->whereIn('category_id', ['223', '15'])    ->where('active', 1);})->get();


Have a look at the advanced where clause documentation for Fluent. Here's an example of what you're trying to achieve:

DB::table('users')    ->whereIn('id', function($query)    {        $query->select(DB::raw(1))              ->from('orders')              ->whereRaw('orders.user_id = users.id');    })    ->get();

This will produce:

select * from users where id in (    select 1 from orders where orders.user_id = users.id)


You can use variable by using keyword "use ($category_id)"

$category_id = array('223','15');Products::whereIn('id', function($query) use ($category_id){   $query->select('paper_type_id')     ->from(with(new ProductCategory)->getTable())     ->whereIn('category_id', $category_id )     ->where('active', 1);})->get();