97 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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;
 | |
| use think\db\Query;
 | |
| 
 | |
| /**
 | |
|  * Sqlite数据库驱动
 | |
|  */
 | |
| class Sqlite extends Builder
 | |
| {
 | |
| 
 | |
|     /**
 | |
|      * limit
 | |
|      * @access public
 | |
|      * @param  Query     $query        查询对象
 | |
|      * @param  mixed     $limit
 | |
|      * @return string
 | |
|      */
 | |
|     public function parseLimit(Query $query, $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  Query     $query        查询对象
 | |
|      * @return string
 | |
|      */
 | |
|     protected function parseRand(Query $query)
 | |
|     {
 | |
|         return 'RANDOM()';
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 字段和表名处理
 | |
|      * @access public
 | |
|      * @param  Query     $query     查询对象
 | |
|      * @param  mixed     $key       字段名
 | |
|      * @param  bool      $strict   严格检测
 | |
|      * @return string
 | |
|      */
 | |
|     public function parseKey(Query $query, $key, $strict = false)
 | |
|     {
 | |
|         if (is_numeric($key)) {
 | |
|             return $key;
 | |
|         } elseif ($key instanceof Expression) {
 | |
|             return $key->getValue();
 | |
|         }
 | |
| 
 | |
|         $key = trim($key);
 | |
| 
 | |
|         if (strpos($key, '.')) {
 | |
|             list($table, $key) = explode('.', $key, 2);
 | |
| 
 | |
|             $alias = $query->getOptions('alias');
 | |
| 
 | |
|             if ('__TABLE__' == $table) {
 | |
|                 $table = $query->getOptions('table');
 | |
|                 $table = is_array($table) ? array_shift($table) : $table;
 | |
|             }
 | |
| 
 | |
|             if (isset($alias[$table])) {
 | |
|                 $table = $alias[$table];
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         if (isset($table)) {
 | |
|             $key = $table . '.' . $key;
 | |
|         }
 | |
| 
 | |
|         return $key;
 | |
|     }
 | |
| }
 | 
