mirror of
https://github.com/grocy/grocy.git
synced 2025-08-14 09:46:07 +00:00
Handle null
in API filter (closes #1173)
This commit is contained in:
@@ -87,13 +87,23 @@ class BaseApiController extends BaseController
|
|||||||
$q,
|
$q,
|
||||||
$matches
|
$matches
|
||||||
);
|
);
|
||||||
error_log(var_export($matches, true));
|
|
||||||
|
if (!array_key_exists('field', $matches) || !array_key_exists('op', $matches) || !array_key_exists('value', $matches))
|
||||||
|
{
|
||||||
|
throw new \Exception('Invalid query');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strtolower($matches['value']) == 'null')
|
||||||
|
{
|
||||||
|
$matches['value'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
switch ($matches['op']) {
|
switch ($matches['op']) {
|
||||||
case '=':
|
case '=':
|
||||||
$data = $data->where($matches['field'], $matches['value']);
|
$data = $data->where('IFNULL(' . $matches['field'] . ', \'\') = ?', $matches['value']);
|
||||||
break;
|
break;
|
||||||
case '!=':
|
case '!=':
|
||||||
$data = $data->whereNot($matches['field'], $matches['value']);
|
$data = $data->where('IFNULL(' . $matches['field'] . ', \'\') != ?', $matches['value']);
|
||||||
break;
|
break;
|
||||||
case '~':
|
case '~':
|
||||||
$data = $data->where($matches['field'] . ' LIKE ?', '%' . $matches['value'] . '%');
|
$data = $data->where($matches['field'] . ' LIKE ?', '%' . $matches['value'] . '%');
|
||||||
@@ -101,25 +111,22 @@ class BaseApiController extends BaseController
|
|||||||
case '!~':
|
case '!~':
|
||||||
$data = $data->where($matches['field'] . ' NOT LIKE ?', '%' . $matches['value'] . '%');
|
$data = $data->where($matches['field'] . ' NOT LIKE ?', '%' . $matches['value'] . '%');
|
||||||
break;
|
break;
|
||||||
case '!>=':
|
|
||||||
case '<':
|
case '<':
|
||||||
$data = $data->where($matches['field'] . ' < ?', $matches['value']);
|
$data = $data->where($matches['field'] . ' < ?', $matches['value']);
|
||||||
break;
|
break;
|
||||||
case '!<=':
|
|
||||||
case '>':
|
case '>':
|
||||||
$data = $data->where($matches['field'] . ' > ?', $matches['value']);
|
$data = $data->where($matches['field'] . ' > ?', $matches['value']);
|
||||||
break;
|
break;
|
||||||
case '!<':
|
|
||||||
case '>=':
|
case '>=':
|
||||||
$data = $data->where($matches['field'] . ' >= ?', $matches['value']);
|
$data = $data->where($matches['field'] . ' >= ?', $matches['value']);
|
||||||
break;
|
break;
|
||||||
case '!>':
|
|
||||||
case '<=':
|
case '<=':
|
||||||
$data = $data->where($matches['field'] . ' <= ?', $matches['value']);
|
$data = $data->where($matches['field'] . ' <= ?', $matches['value']);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user