ThinkPHP3.2.3与SQLite

浏览:7406 发布日期:2015/06/10 分类:技术分享 关键字: SQLite
这两天想用ThinkPHP结合SQLite开发试试。结果发现3.2.3的TP在使用where方法查询SQLite数据的时候。生成出来的sql没有where。原因是获取不到表字段。
于是对比了一下3.1的代码。修复之。

配置:  'DB_TYPE'    => 'sqlite',
  'DB_NAME'    => DATA_PATH.'/test.db',
文件:\Library\Think\Db\Driver\Sqlite.class.php    public function getFields($tableName) {
        list($tableName) = explode(' ', $tableName);
        $result =   $this->query('PRAGMA table_info( '.$tableName.' )');
        $info   =   array();
        if($result){
            foreach ($result as $key => $val) {
                $name = isset($val['field']) ? $val['field'] : $val['name'];
                $info[$name] = array(
                    'name'    => $name,
                    'type'    => $val['type'],
                    'notnull' => (bool)(((isset($val['null'])) && ($val['null'] === '')) || ((isset($val['notnull'])) && ($val['notnull'] === ''))), // not null is empty, null is yes
                    'default' => isset($val['default']) ? $val['default'] : (isset($val['dflt_value'])?$val['dflt_value']:""),
                    'primary' => isset($val['key']) ? strtolower($val['key']) == 'pri' : (isset($val['pk']) ? $val['pk'] : false),
                    'autoinc' => isset($val['extra']) ? strtolower($val['extra']) == 'auto_increment' : (isset($val['key']) ? $val['key'] : false),
                );
            }
        }
        return $info;
    }
大功告成!其他问题暂未发现。
最佳答案
评论( 相关
后面还有条评论,点击查看>>