搜尋
首頁php教程php手册Thinkphp中Create方法深入探究

由于工作原因在thinkPHP的create()方法上遇到了问题,所以跟踪了create(),从而进一步探究了create()方法。
原来create()方法原来有两个参数第一个参数就是众所周知的数据参数第二个是隐藏的$type参数,那么这个参数用来控制什么的呢?
// 状态$type = $type?$type!empty($data[$this->getPk()])?self::MODEL_UPDATE:self::MODEL_INSERT);
仔细琢磨了这句话才发现,这个隐藏参数是用来指明本次数据库具体是什么操作的,1即为插入操作,0即为更新操作
默认的情况下是不用给这个参数赋值的,原因是,系统能自动识别

它是这么识别的:

如果您传入的数据中有与主键相同字段的,则本次数据库操作则默认为更新操作,这么判断主要是因为大部分情况主键都是默认自增的,插入操作一般不会给主键赋值,但问题就出在这里


最近做的项目直接把学号作为主键,而学号不能使用自增而是有固定格式的,必须录入,
但是系统就自动把我的录入操作当成了更新操作,而我的自动完成代码都是这么写的:

复制代码 代码如下:

protected $_auto = array(
        array('majorid','maxmajoridadd1',1,'callback'),
    );



第三个参数1查看手册就知道是指这个自动完成操作是在插入时候执行的。
而系统把我的插入操作当成了更新操作,我设置的自动完成代码自然就失效而不被执行了

当出现了你也要录入主键字段值的情况的时候您可以这么写

复制代码 代码如下:

create($_POST,1)

直接告诉create方法此次操作是插入操作

这是非常难以发现的问题,最近发现好多人遇到此问题,特此撰文说明。

此外自动验证/自动完成功能失效还有可能是你的Model类名称写错了之类的,我就犯过这种错误,多个字母少个字母经常的事情

基本上自动验证/自动完成失效就这两种情况

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境