| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | <?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------namespace think\db\builder;use think\db\Builder;/** * Pgsql数据库驱动 */class Pgsql extends Builder{    protected $insertSql    = 'INSERT INTO %TABLE% (%FIELD%) VALUES (%DATA%) %COMMENT%';    protected $insertAllSql = 'INSERT INTO %TABLE% (%FIELD%) %DATA% %COMMENT%';    /**     * limit分析     * @access protected     * @param mixed $limit     * @return string     */    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;    }    /**     * 字段和表名处理     * @access protected     * @param mixed  $key     * @param array  $options     * @return string     */    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, '(')) {            // JSON字段支持            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;    }    /**     * 随机排序     * @access protected     * @return string     */    protected function parseRand()    {        return 'RANDOM()';    }}
 |