I'm using PHP laravel framework
what I want is accessing query whereClause parameters as JSON and converting it to a string query for reading records from database
example:
converting this:
{"working_years":{">":2,"<":6},"car_name":"someName","car_company":"companyName"}
to:
Select * from my_table where working_years > 2 AND working_years < 5 AND car_name=someName AND car_company = companyName
the important part for me is "where" conditions
here is my code:
// $query=$request->where;
//for now we access it from a string:
$query = '{"working_years":{">":2,"<":6},"car_name":"someName","car_company":"companyName"}';
if (isset($query)) {
$i = 0;
$whereFieldsAndVals = array([]);// ex:-> [10][name,abc]
try {
$operator = array([]);// ex:-> [10][=,>]
foreach (json_decode($query) as $key => $value) {
if (is_object($value)) {//has custom conditions
$j = 0;
foreach ($value as $k => $v) {
$operator[$i][$j] = $k;
$whereFieldsAndVals[$i][1] = $v;
$j++;
}
} else {
$whereFieldsAndVals[$i][1] = $value;
}
$whereFieldsAndVals[$i][0] = $key;
$i++;
}
} catch (\Exception $exception) {
return $this->customError($exception->getMessage(), 30, 500);
}
}
return $operator;
//this will return:
//[[">","<"]]
//return $whereFieldsAndVals;
//this will return:
//[{"1":6,"0":"working_years"},{"1":"someName","0":"car_name"},{"1":"companyName","0":"car_company"}]
}