|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace think\db\builder; |
|
|
|
|
|
use think\db\Builder; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Pgsql extends Builder |
|
|
{ |
|
|
protected $insertSql = 'INSERT INTO %TABLE% (%FIELD%) VALUES (%DATA%) %COMMENT%'; |
|
|
protected $insertAllSql = 'INSERT INTO %TABLE% (%FIELD%) %DATA% %COMMENT%'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function parseLimit($limit) |
|
|
{ |
|
|
$limitStr = ''; |
|
|
if (!empty($limit)) { |
|
|
$limit = explode(',', $limit); |
|
|
if (count($limit) > 1) { |
|
|
$limitStr .= ' LIMIT ' . $limit[1] . ' OFFSET ' . $limit[0] . ' '; |
|
|
} else { |
|
|
$limitStr .= ' LIMIT ' . $limit[0] . ' '; |
|
|
} |
|
|
} |
|
|
return $limitStr; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function parseKey($key, $options = [], $strict = false) |
|
|
{ |
|
|
if (is_numeric($key)) { |
|
|
return $key; |
|
|
} elseif ($key instanceof Expression) { |
|
|
return $key->getValue(); |
|
|
} |
|
|
|
|
|
$key = trim($key); |
|
|
if (strpos($key, '$.') && false === strpos($key, '(')) { |
|
|
|
|
|
list($field, $name) = explode('$.', $key); |
|
|
$key = $field . '->>\'' . $name . '\''; |
|
|
} elseif (strpos($key, '.')) { |
|
|
list($table, $key) = explode('.', $key, 2); |
|
|
if ('__TABLE__' == $table) { |
|
|
$table = $this->query->getTable(); |
|
|
} |
|
|
if (isset($options['alias'][$table])) { |
|
|
$table = $options['alias'][$table]; |
|
|
} |
|
|
} |
|
|
if (isset($table)) { |
|
|
$key = $table . '.' . $key; |
|
|
} |
|
|
return $key; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function parseRand() |
|
|
{ |
|
|
return 'RANDOM()'; |
|
|
} |
|
|
|
|
|
} |
|
|
|