如何让thinkphp在获取数据库字段信息时区分数据库字段大小写

如何让thinkphp在获取数据库字段信息时区分数据库字段大小写,第1张

解决办法:

就是修改thinkphp的源码中的Library/Db/Driver.class.php文件,把

PDO::ATTR_CASE =>PDO::CASE_LOWER 改为 PDO::ATTR_CASE =>PDO::CASE_NATURAL,

或者在配置文件里面增加

DB_PARAMS’=> array(\PDO::ATTR_CASE =>\PDO::CASE_NATURAL) 这一句。

第一次使用的时候这种解决方法果然可以,但是做另外一个项目的时候却始终不生效,无奈,百度了半天,找到一个方法,因为thinkphp执行的时候默认会把大写转换成小写,所以我们找到它的源码不让它转换就行。

修改Common/functions.php里面的parse_name函数源码为:

function parse_name($name, $type=0) {

/* if ($type) {

return ucfirst(preg_replace_callback('/_([a-zA-Z])/', function($match){return strtoupper($match[1])}, $name))

} else {

//这里会将数据库表名里的大写转换为 _小写,修改成不转换

return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"))

}*/

return $name

}

其中注释掉的是原来的,未注释是新增的。

修改Library/Think/Model.class.php里面的getTableName函数:

//$this->trueTableName= strtolower($tableName)//这里会将表名转换成小写,修改成不转换

$this->trueTableName= $tableName

修改其中一句,这样就可以解决数据库字段名大写的问题。

一、调用方法。

1、调用当前控制器的test方法

1)、使用面向对象的技术

echo $this->test()

echo self::test()

echo Index::test()

2)、使用系统方法

echo action('test')

2、调用User控制器下的index方法

1)、命名空间

$model=new \app\index\controller\User

echo $model->index()

2)、使用系统方法

echo action('User/index')

3)、调用后台模块下Index控制器index方法

a、命名空间

$model=new \app\admin\controller\Index

echo $model->index()

b、使用系统方法

echo action('admin/Index/index')

二、执行流程。

1、入口文件(C:\AppServ\www\tp5\public\index.php)

作用:

1)定义目录常量

2)加载框架引导目录

2、加载框架的引导文件(C:\AppServ\www\tp5\thinkphp\start.php)

作用:

1) 引导基础文件

2) 对应用进行运转

3、加载框架的基础引导文件(C:\AppServ\www\tp5\thinkphp\base.php)

作用:

1) 加载系统常量

2) 引入loader类 (C:\AppServ\www\tp5\thinkphp\library\think\loader.php)

3) 引入环境变量

4) 注册自动记载机制

5) 注册异常处理机制(C:\AppServ\www\tp5\thinkphp\library\think\Error.php)

6) 记载惯例配置(C:\AppServ\www\tp5\thinkphp\convention.php)

4、运行应用(C:\AppServ\www\tp5\thinkphp\library\think\App.php) 下的run方法

1)、第一步: 加载当前控制器中 initCommon() 方法

2)、第二步: 加载当前控制器中 init() 方法

a、加载各种配置文件

b、加载公共文件

c、加载语言包

3)、第三步: 设置时区

4)、第四步: 加载当前控制器 routeCheck() 方法 路由检测

5)、第五步: 调用控制器中exec方法

根据用户请求进行分发处理

6)、第六步: 根据不同请求类型记载对应文件 module方法

加载到对应的控制器和对应方法

5、响应输出

用户看到的所有界面就加载出来了

thinkphp5.0

不好意思,能点进来看一下嘛,真的能领金币······

芯悦社

广告

JavaScript的异步 *** 作

128阅读·0评论·0点赞

2020年12月15日

php定时自动运行thinkphp方法(含停止)

1370阅读·0评论·0点赞

2017年4月20日

tp5跨控制器调用方法

936阅读·0评论·0点赞

2021年8月12日

tp5 跨控制器调用

610阅读·0评论·1点赞

2021年8月12日

php thinkphp5模型类,thinkphp5调用模型的方法

570阅读·0评论·0点赞

2021年5月7日

tp5控制器调用,方法调用

2353阅读·0评论·0点赞

2018年8月3日

好消息!京东特价版搞活动啦~补贴加码真的省钱

京东

广告

在使用tp框架的链式 *** 作的field方法,出现数据库‘找不到列‘的问题

171阅读·1评论·0点赞

2021年3月3日

浅析ThinkPHP框架SQL *** 作链式写法原理

175阅读·0评论·0点赞

2015年8月10日

php调用class文件路径,thinkphp文件处理类Dir.class.php的用法分析

145阅读·0评论·0点赞

2021年3月23日

链式写法php,浅析ThinkPHP框架SQL *** 作链式写法原理

61阅读·0评论·0点赞

2021年4月21日

PHP技巧之链式调用

224阅读·0评论·0点赞

2020年6月12日

thinkphp5 控制器以及方法的调用

1223阅读·0评论·1点赞

2019年8月12日

tp5下自定义类,not found

1.2W阅读·6评论·2点赞

2017年6月23日

tp5中调用一些类的静态方法前面加\

3755阅读·0评论·1点赞

2017年7月13日

tp5怎么跨控制器调用别的方法

6105阅读·0评论·1点赞

2019年4月8日

thinkphp 输出变量使用函数处理

778阅读·0评论·0点赞

2016年8月23日

TP5行为扩展(钩子函数)

1.7W阅读·0评论·0点赞

2017年3月31日

TP5.1 调用request方法

3137阅读·0评论·0点赞

2018年12月7日

TP5调用模型内自定义方法

3294阅读·0评论·0点赞

2019年3月28日

去首页

看看更多热门内容

评论1

ctotalk

very good


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11355491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存