subconsultas otra dentro consulta php laravel subquery laravel-3 where-in

php - otra - Cómo hacer esto en Laravel, subconsulta en donde



consulta dentro de otra consulta laravel (6)

¿Cómo puedo hacer esta consulta en Laravel:

SELECT `p`.`id`, `p`.`name`, `p`.`img`, `p`.`safe_name`, `p`.`sku`, `p`.`productstatusid` FROM `products` p WHERE `p`.`id` IN ( SELECT `product_id` FROM `product_category` WHERE `category_id` IN (''223'', ''15'') ) AND `p`.`active`=1

También podría hacer esto con una unión, pero necesito este formato para el rendimiento.


Considera este código:

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


Eche un vistazo a la documentación avanzada de wheres para Fluent: http://laravel.com/docs/queries#advanced-wheres

Aquí hay un ejemplo de lo que estás tratando de lograr:

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

Esto producirá:

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


El siguiente código funcionó para mí:

$result=DB::table(''tablename'') ->whereIn(''columnName'',function ($query) { $query->select(''columnName2'')->from(''tableName2'') ->Where(''columnCondition'',''='',''valueRequired''); }) ->get();


Laravel 4.2 y versiones posteriores, pueden usar la consulta de relación de prueba: -

Products::whereHas(''product_category'', function($query) { $query->whereIn(''category_id'', [''223'', ''15'']); }); public function product_category() { return $this->hasMany(''product_category'', ''product_id''); }


Puedes usar la variable usando la palabra clave "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();


Product::from(''products as p'') ->join(''product_category as pc'',''p.id'',''='',''pc.product_id'') ->select(''p.*'') ->where(''p.active'',1) ->whereIn(''pc.category_id'', [''223'', ''15'']) ->get();