Subquery Where condition on Laravel query builder

my problem is simple, I'm a student, I'm learning laravel, i don't know how to create a where condition from a subquery.

This is the query

 "SELECT id_parameter,value,code_rule,block,grouping,count FROM rule_definition WHERE (code_rule IN (SELECT code_rule FROM rule_definition WHERE id_parameter = 1 AND value = '$x') AND (id_parameter = 1 AND value = '$x')) OR (id_parameter != 1 AND value != '$x')";

Im using laravel 6.0 query builder.

Thanks

Upvotes: 0

Views: 240

Answers (2)

TsaiKoga
TsaiKoga

Reputation: 13394

I don't think you need that subquery. Because it from the same table and same condition.

$query = DB::table('rule_definition')
        ->select('id_parameter, value, code_rule, block,grouping, count')
        ->where(function ($q) use ($x) { 
             $q->where('id_parameter','=',1)
               ->where('value','=',$x);
         })->orWhere(function ($q) use ($x) { 
             $q->where('id_parameter','!=',1)
               ->where('value','!=',$x);
         })

Upvotes: 1

Tamzid Oronno
Tamzid Oronno

Reputation: 529

$query = DB::table('rule_definition')->where(function ($q){ 
             $q->where('id_parameter','=',1)
               ->where('value','=','$x');
         })->orWhere(function ($q){ 
             $q->where('id_parameter','!=',1)
               ->where('value','!=','$x');
         })->select('id_parameter, value, code_rule, block,grouping, count')

Upvotes: 0

Related Questions