Thinkphp3.2数据库字段自动转小写,字段大小写自动转换,以及thinkphp3一些bug
公司在使用thinkphp框架,版本也有些老,被一些bug坑了,记录一下
自动转小写解决办法,最简单的就是在配置文件加上
'DB_PARAMS' => [\PDO::ATTR_CASE => \PDO::CASE_NATURAL],
但是如果项目已经上线了一段直接, 这样可能会影响其他人写的
然后我想在控制器里面动态改变DB_PARAMS这个配置,后来发现不行.
因为基类里面有数据库操作,model是单例的.不会重新new对象.
最后我想到了一个办法,重新声明一个函数,就是为了让他重新new一个model
function db($table=''){
C('DB_PREFIX','');
$config = [
'db_type' => C('DB_TYPE'),
'db_user' => C('DB_USER'),
'db_pwd' => C('DB_PWD'),
'db_host' => C('DB_HOST'),
'db_port' => C('DB_PORT'),
'db_name' => C('DB_NAME'),
'db_params' => [
\PDO::ATTR_CASE => \PDO::CASE_NATURAL,
],
];
return M($table)->db('wzb',$config);
}
这样在试用的时候,把M换成db就好了
如果还想修改其他参数,可以参照ThinkPHP\Library\Think\Db.class.php,大概在56行左右,其中parseConfig函数,里面有配置的参数
因为公司项目每次实例化model都是M('tableName',null),所以我把表前缀也去掉了.
温馨提示: 楼主不建议表中的字段含有大写,建议试用小写+斜划线的命名方式.
版本:thinkphp3.1的pdo扩展
问题1:在使用pdo链接方式的时候,使用模型find($id)方法时,不会自动识别主键
解决办法:在ThinkPHP\Extend\Driver\Db\DbPdo.class.php中,大概在178行下面加上
if($info['primary']===false){
$info['primary'] = $val['key'];
}
版本:thinkphp3.1
问题2:如果开启自动过滤数据库不存在的字段(默认开启),使用join的时候,会过滤掉where里面的join外表里面的字段
解决办法:在ThinkPHP\Lib\Core\Model.class.php中,大概在549行
把if(isset($options['where']) && is_array($options['where']) && !empty($fields))) {
改成 if(isset($options['where']) && is_array($options['where']) && !empty($fields) && !isset($options['join'])) {
就是多加一个!isset($options['join'])条件
问题3:模板自动压缩了,导致html换行没有空格. 其实这个也不算bug, 这个默认是开启的.
解决办法:配置文件改一下TMPL_STRIP_SPACE参数
Thinkphp3.2数据库字段自动转小写,字段大小写自动转换,以及thinkphp3一些bug的更多相关文章
- [MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段
sql注入后可以通过该数据库获取所有表的字段信息 1. COLLATIONS表 提供有关每个字符集的排序规则的信息. COLLATIONS表包含以下列: COLLATION_NAME 排序规则名称. ...
- 数据库中存储日期的字段类型到底应该用varchar还是datetime
将数据库中存储时间的数据类型改为varchar(),这时最好让这些时间是数据库中自动生成的(一个没有格式的输入也可能会导致输出错误),因为存储类型为varchar(),所以获取到的值也就被认为是一个字 ...
- 在PowerDesigner中自动生成sqlserver字段备注
在PowerDesigner中自动生成sqlserver字段备注 PowerDesigner是数据库设计人员常用的设计工具,但其自生默认生成的代码并不会生成sqlserver数据库的字段备注说明.在生 ...
- Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
创建一个 Django 项目及应用 django-admin startproject orm cd orm python manage.py startapp app01 在 models.py 上 ...
- [转帖]Oracle数据库lob大对象数据类型字段总结,值得收藏
Oracle数据库lob大对象数据类型字段总结,值得收藏 原创 波波说运维 2019-07-11 00:02:00 https://www.toutiao.com/i67108943269703357 ...
- mysql数据库之表操作及字段约束条件
目录 一.存储引擎 二.表介绍 三.创建表 四.查看表结构 五.数据类型 一.介绍 二.数值类型 整数类型 浮点型 三.字符串类型 四.日期类型 五.枚举类型与集合类型 六.约束条件 七.修改表 al ...
- EF部分字段更新,自动忽略null字段
某个项目里的update代码是类似这样的 public T Update<T>(T entity) where T : ModelBase { var set = this.Set< ...
- Visio 2007中进行数据库建模时如何显示字段类型以及概念名称
关于在VISIO中进行数据库建模时如何显示字段类型,以及注释的 1 如何显示字段类型: 在visio菜单上--->点击数据库--->选项--->文档 打开后选择表这项,在上 ...
- access数据库用sql语句添加字段,修改字段,删除字段
用 Create Table 建立一个表 Table1 ,主键是自动编号字段,另一个字段是长度是 10 的文本字段. 代码如下:CREATE TABLE Table1 (Id COUNTER CONS ...
随机推荐
- IDEA使用MybatisCodeHelperPro插件
下载MybatisCodeHelperPro: 链接:https://pan.baidu.com/s/1H6csq9STVh0Ofldh6V6gxQ提取码:r2g3 IDEA安装本地插件: ctrl+ ...
- Android编译implement、api 和compile区别【转】
感谢大佬:https://blog.csdn.net/fengyeNom1/article/details/81903186 前言 2017 年google 后,Android studio 版本更新 ...
- UITabBarController管理原则
- CocoaPods使用专题 by h.l
cocoaPods安装 CocoaPods安装和使用教程(code4app) cocoapods使用问题解决 cocoapods慢如何解决? CocoaPods停在Analyzing dependen ...
- 【转】 Python生成器generator之next和send运行流程
原文链接:https://blog.csdn.net/pfm685757/article/details/49924099 对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一 ...
- Zabbix企业级开源监控解决方案
Zabbix企业级开源监控解决方案 目录 Zabbix企业级开源监控解决方案 一.Zabbix 1. 监控系统的必要性 2. 监控软件的作用 3. Zabbix的定义 4. Zabbix的监控原理 5 ...
- 一文详解Kafka API
摘要:Kafka的API有Producer API,Consumer API还有自定义Interceptor (自定义拦截器),以及处理的流使用的Streams API和构建连接器的Kafka Con ...
- Ubuntu 16.04 更改系统语言为简体中文 #####避坑指南
大家跟着我的步骤一步一步来,肯定不会出现问题的 我这里说明两点,一是切换到管理员用户,二是更新网络源! 且待大家走一遍安装流程 一.安装时报错 原因:以访客的身份进入的会报错,改为管理员进入即可. p ...
- 读源码【读mybatis的源码的思路】
✿ 需要掌握的编译器知识 ★ 编译器为eclipse为例子 调试准备工作(步骤:Window -> Show View ->...): □ 打开调试断点Breakpoint: □ 打开变量 ...
- 【Linux/Oracle】ORA-00031:标记要终止的会话 解决
在PL/SQL操作了一条delete语句用于删除这张1.4亿条数据的表,执行了12个小时还没删完 (经DB指导,量级大的需要使用truncate table table_name 进行删除) --查询 ...