public function query($query, $args = [], $type = 'object') { // replace backticks $query = str_replace('`', '"', $query); // replace add single quotes to interval statements $query = preg_replace('/(interval) ([0-9]+) ([a-z]+)/i', '\\1 \'\\2 \\3\'', $query); // replace unix_timestamp $query = preg_replace('/unix_timestamp( )?\\((.*?)\\)/i', 'extract(epoch FROM \\2)', $query); // replace date_sub $query = preg_replace('/(date_sub\\((.*?),(.*?))\\)/i', '\\2 - \\3', $query); // replace date formats $query = preg_replace_callback('/date_format\\(( )?(.*?),( )?("(.*?)"|\'(.*?)\')( )?\\)/i', function ($m) { $find = ['/\\%Y/', '/\\%m/', '/\\%d/', '/\\%H/', '/\\%i/', '/\\%s/', '/\\%W/']; $replace = ['YYYY', 'MM', 'DD', 'HH24', 'MI', 'SS', 'D']; $format = preg_replace($find, $replace, $m[6] ? $m[6] : $m[5]); return 'to_char(' . $m[2] . ', \'' . $format . '\')'; }, $query); if ($args) { foreach ($args as $k => $v) { if ($v === true) { $args[$k] = 'true'; } elseif ($v === false) { $args[$k] = 'false'; } } } return parent::query($query, $args, $type); }
public function query($query, $args = [], $type = 'object') { // replace bool_and $query = preg_replace('/(bool_and\\((.*?))\\)/i', 'max(\\2)', $query); if ($args) { foreach ($args as $k => $v) { if ($v === true) { $args[$k] = '1'; } elseif ($v === false) { $args[$k] = '0'; } } } return parent::query($query, $args, $type); }