由于工作原因在thinkPHP的create()方法上遇到了问题,所以跟踪了create(),从而进一步探究了create()方法。
原来[b]create()方法原来有两个参数[/b],[b]第一个参数就是众所周知的数据参数[/b],[b]第二个是隐藏的$type参数[/b],那么这个参数用来控制什么的呢?
// 状态$type = $type?$type!empty($data[$this->getPk()])?self::MODEL_UPDATE:self::MODEL_INSERT);
仔细琢磨了这句话才发现,[b]这个隐藏参数是用来指明本次数据库具体是什么操作的,1即为插入操作,0即为更新操作[/b],
默认的情况下是不用给这个参数赋值的,原因是,系统能自动识别
它是这么识别的:
如果您传入的数据中有与主键相同字段的,则本次数据库操作则默认为更新操作,这么判断主要是因为大部分情况主键都是默认自增的,插入操作一般不会给主键赋值,但问题就出在这里
最近做的项目直接把学号作为主键,而学号不能使用自增而是有固定格式的,必须录入,
但是系统就自动把我的录入操作当成了更新操作,而我的自动完成代码都是这么写的:
[url=http://www.1sucai.cn/Special/39.htm]ThinkPHP入门教程[/url]》、《[url=http://www.1sucai.cn/Special/853.htm]thinkPHP模板操作技巧总结[/url]》、《[url=http://www.1sucai.cn/Special/129.htm]ThinkPHP常用方法总结[/url]》、《[url=http://www.1sucai.cn/Special/26.htm]smarty模板入门基础教程[/url]》及《[url=http://www.1sucai.cn/Special/350.htm]PHP模板技术总结[/url]》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。