I'm new to backend programming and CodeIgniter is my first framework. This is new to me. Right now, the thing that I'm working is that I need to create a query based on the JSON encoded data saved at my table.
I have here a segmentation form that should build a query to look/search for the customers profiles based on the condition set
$segment = array(
...
'filters' => json_encode($post['filters']), //to insert the filters in json
...
);
if ($this->model->addSegments($segment))
The filters saved in the database are like this :
{"data":[{"data":{"condition":"0","attribute":"gender","sign":"=","value":"Male"},"type":"condition","operator":"0","filter":{"operator":"0"}}],"type":"match","operator":"0"}
Looking for the answers, I found this forum and I relate it to the problem that I had: http://www.codingforums.com/php/202207-turning-json-object-into-nested-sql-where-clause.html
Calling the same like function (solution at the link) to the controller using this lines:
$filter = $this->model->getSegmentsFilters($id_segment);
$filters = $this->model->parseFilterToQuery(json_decode($filter['filters'], true));
With the parameter TRUE
from the json_decode
, It throws the filters in array and using print_r
shown like this:
Array (
[0] => Array (
[data] => Array (
[condition] => 0
[attribute] => firstname
[sign] => =
[value] => John )
[type] => condition
[operator] => 0
[filter] => Array (
[operator] => 0 )
)
[1] => Array (
[data] => Array (
[condition] => 0
[attribute] => gender
[sign] => =
[value] => Male )
[type] => condition
[operator] => condition
[filter] => Array (
[operator] => 0 )
)
)
the $sql
inside if(is_array)
doesn't show any value to concatenate with. I want it to concatenate with another query as a WHERE clause like this idea.
$sql = "SELECT * FROM customers WHERE" . parseFilterToQuery($filters);
If you think that the solution/procedure that I came up is correct. My question is that inside the if(is_array)
condition,
how should I work on it with associative JSON array?