
thinkphp
莫冲
TO Be SIMPLE & STUDPID
展开
-
thinkphp5 模型多次save操作,会产生重复的主键ID
在thinkphp5.0.7版本下使用,如果用模型多次执行save操作,会提示产生的主键ID重复。代码如下 $FbPostImageModel = new FbPostImage(); for ($i=0; $i < 10; $i++) { $data['object_id'] = rand(0, 10000); $data['picture'] = "test";原创 2017-03-09 14:53:11 · 5033 阅读 · 0 评论 -
thinkphp不会识别unsigned int数据类型,会导致sql执行错误
数据库中是 unsigned int, 支持40多亿, 但用tp进行查询的时候, where方法会自动把大于2147483647的(有符号int最大值) 转化成 2147483647print_r($condition);$Mode->where($condition)->find();echo $Mode->getlastSql();结果:Array(...原创 2013-11-19 10:14:38 · 191 阅读 · 0 评论 -
TP3.2的URL忽略大小写配置导致找不到模板
我在TP中开启了'URL_CASE_INSENSITIVE' => true, //默认false 表示URL区分大小写 true则表示不区分大小写结果导致页面找不到模板,原因就是因为这个配置忽略了大小写,TP去找对应的模板时是用全部小写,忽略了大小写。因此找不到有大小写的Action对应的模板。在APP_DEBUG=true时是没问题的,在APP_DEBUG=false时才会出现...原创 2015-01-08 09:51:32 · 401 阅读 · 0 评论 -
TP3.1以上版本field的內容不要加空格,否则会被过滤
3.1以上版本支持field("a,b,c",true)的写法,这样查询出的field就会过滤掉a,b,c这三个字段。但是如果写成field("a, b, c", true)则只会过滤掉a则会把b,c显示出来。因为多了空格错误写法:[code="java"]$this->field("id,issueID,landscapeCoverID, portraitCoverID,bookIn...原创 2015-01-20 10:11:31 · 148 阅读 · 0 评论 -
TP3.2的import不能import Tp/library下的類
比如在\ThinkPHP\Library\Org\Util下的類 String.class.php如果用[code="java"]import("Org.Util.String");$s = new \String();[/code]會報錯。如果這個String.class.php是放在分組下的ORG則是可以實例化的。而放在自動加載的類庫路徑中是不行的。只能通過\O...原创 2014-08-01 14:32:23 · 214 阅读 · 0 评论 -
TP升级到3.2.3的注意事项
从TP3.2.2升级到3.2.3有以下几点需要注意1 TP3.2.3的DB FIELD默认小写,如果DB有大小写混合的设计,需要在config.php添加以下设置'DB_PARAMS' => array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL),2 'URL_CASE_INSENSITIVE' =>true時,APP_DEBUG=tr...原创 2015-02-16 10:14:22 · 205 阅读 · 0 评论 -
TP的module支持中文
為了讓URL支持中文,例如www.xxx.com/廣州/xx 需要在emptyAction中處理捕獲到的廣州/xxxx。但是TP默認的module名稱是不支持中文的。因此需要修改TP框架的PHP核心文件:App.class.php修改後的代碼:[code="java"]/** * 执行应用程序 * @access public * @return...原创 2015-05-20 14:06:07 · 251 阅读 · 0 评论 -
TP3.2的try catch如何捕获异常
参考:http://www.oschina.net/question/723831_218382[code="java"]public function t(){ try { throw new \Exception("haha"); }catch (Exception $e){ dump($e);...原创 2015-10-29 17:16:53 · 1714 阅读 · 0 评论 -
TP getField不支持多表查询
$time = time() - 60*60*24; // 一天之前的臨時文件 $yesterday = date("Y-m-d H:i:s", $time); $fileIDs = M("dpp_tmp_page, file")->where("dpp_tmp_page.fileID=file.fileID and file.createDate < '" ...原创 2014-11-12 10:16:33 · 185 阅读 · 0 评论 -
thinkphp5下使用phinx
安装think-migrate composer require topthink/think-migration注意事项,不支持修改文件配置目录在命令行下运行查看帮助,可以看到新增的命令php think migrate migrate:create Create a new migration migrate:rollback Rollback the last o原创 2017-03-10 18:14:42 · 2212 阅读 · 0 评论 -
TP在APP_DEBUG=false的情況下,CLI和WEBSITE會共用同一個~runtime.php導致出錯的問題解決辦法
TP若使用了define('APP_DEBUG',false);會生成./Runtime/~runtime.php 緩存文件,以後每次調用都會用這個文件來處理但是若一個項目又使用了CLI,CLI生成的./Runtime/~runtime.php 文件跟website是同一個文件,而且cli生成的./Runtime/~runtime.php文件少了一些定義,例如__ROOT__if(原创 2017-03-28 14:36:48 · 1228 阅读 · 0 评论 -
thinkphp5 模型关联的bug
用tp5的模型关联时发现一个bug。为了输出关联模型的字段,有两种写法,一种是5.0.4以上版本才支持的bind(‘xxx’),另一个中是 field(‘xx’) bind写法如下public function images(){ return $this->hasOne('FbPostImage','object_id', 'object_id')->bind('images');原创 2017-03-09 17:10:43 · 2796 阅读 · 0 评论 -
thinkphp5 command模式下无法获取配置信息的解决办法
又发现一个bug,在命令行下执行自定义的命令 php think sync在sync的对应的操作上获取配置信息$fbPages = config("FACEBOOK_PAGES");dump($fbPages);exit;打出来是null,而在web模式下是可以输出配置信息的。 TP5越用 越没信心了。原创 2017-03-10 14:17:16 · 8071 阅读 · 1 评论 -
thinkphp config文件将array serialize处理的区别
在config.php中定义array类型的常量,若需要将数组serialize序列化,则需要这样写'ERROR_CODE'=>serialize(array( // Client Error 4xx 400 => 'Bad Request', 401 => 'Unauthorized', ...)),在使用时用$ERROR_COEDE = unseri原创 2017-03-28 14:25:18 · 971 阅读 · 0 评论 -
TP的sessionDB 扩展驱动
tp提供了sessionDB的扩展驱动。发现以下问题1 读取session会调用sessionDB的write方法读取$_SESSION['abc']首先会调用ThinkPHP\Common\functions.php 的session函数,传递name是空数组,value是""的参数。因此会执行sessionDB中的write方法。例如以下代码$mid = $_SESSION['原创 2017-03-28 14:29:33 · 783 阅读 · 0 评论 -
TP3.1以上版本field的內容不要加空格,否则会被过滤
3.1以上版本支持field("a,b,c",true)的写法,这样查询出的field就会过滤掉a,b,c这三个字段。但是如果写成field("a, b, c", true)则只会过滤掉a则会把b,c显示出来。因为多了空格错误写法:$this->field("id,issueID,landscapeCoverID, portraitCoverID,bookIndex, updateTime原创 2017-03-28 14:30:25 · 595 阅读 · 0 评论 -
TP升级到3.2.3的注意事项
从TP3.2.2升级到3.2.3有以下几点需要注意1 TP3.2.3的DB FIELD默认小写,如果DB有大小写混合的设计,需要在config.php添加以下设置'DB_PARAMS' => array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL),2 'URL_CASE_INSENSITIVE' =>true時,APP_DEBUG=true,若原创 2017-03-28 14:31:03 · 1487 阅读 · 0 评论 -
TP的module支持中文
為了讓URL支持中文,例如www.xxx.com/廣州/xx 需要在emptyAction中處理捕獲到的廣州/xxxx。但是TP默認的module名稱是不支持中文的。因此需要修改TP框架的PHP核心文件:App.class.php修改後的代碼:/** * 执行应用程序 * @access public * @return void */原创 2017-03-28 14:33:26 · 626 阅读 · 0 评论 -
TP3.2的try catch如何捕获异常
参考:http://www.oschina.net/question/723831_218382public function t(){ try { throw new \Exception("haha"); }catch (Exception $e){ dump($e); }原创 2017-03-28 14:36:12 · 3774 阅读 · 1 评论 -
TP在APP_DEBUG=false的情況下,CLI和WEBSITE會共用同一個~runtime.php導致出錯的問題解決辦法...
TP若使用了[code="java"]define('APP_DEBUG',false);[/code]會生成./Runtime/~runtime.php 緩存文件,以後每次調用都會用這個文件來處理但是若一個項目又使用了CLI,CLI生成的./Runtime/~runtime.php 文件跟website是同一個文件,而且cli生成的./Runtime/~runtime.php文件...2015-12-14 11:43:16 · 155 阅读 · 0 评论