public function getTotalNumberOfRows(array $filters = array())
{
return intval($this->Database->whereNested(function ($query) use($filters) {
foreach ($filters as $filter) {
if ($filter['op'] == 'is in') {
$query->whereIn($filter['field'], explode(',', $filter['data']));
continue;
}
if ($filter['op'] == 'is not in') {
$query->whereNotIn($filter['field'], explode(',', $filter['data']));
continue;
}
if ($filter['op'] == 'is null') {
$query->whereNull($filter['field']);
continue;
}
if ($filter['op'] == 'is not null') {
$query->whereNotNull($filter['field']);
continue;
}
if ($filter['op'] == 'between') {
if (strpos($filter['data'], ' - ') !== false) {
list($from, $to) = explode(' - ', $filter['data'], 2);
if (!$from or !$to) {
throw new \Exception('Invalid between format');
}
} else {
throw new \Exception('Invalid between format');
}
if ($from == $to) {
$query->where($filter['field'], $from);
} else {
//$query->whereBetween($filter['field'], array($from, $to));
$query->where($filter['field'], '>=', $from);
$query->where($filter['field'], '<=', $to);
}
continue;
}
$query->where($filter['field'], $filter['op'], $filter['data']);
}
})->count());
}