protected function makeFilter($query, $filter)
{
// find the type of column
if(strpos($filter['column'], '.') !== false) {
// nested column
list($relation, $filter['column']) = explode('.', $filter['column']);
$filter['match'] = 'and';
if($filter['column'] == 'count') {
$this->{camel_case($filter['operator'])}($filter, $query, $relation);
} else {
$query->whereHas($relation, function($q) use ($filter) {
$this->{camel_case($filter['operator'])}($filter, $q);
});
}
} else {
// normal column
$this->{camel_case($filter['operator'])}($filter, $query);
}
}