国产又猛又爽又黄视频|在线观看人成视频免费|少妇高潮太爽了在线视频|911国产免费无码专区|特黄做受又大又粗又长大片|欧美一级二级免费在线观看|日日夜人人澡人人澡人人看免|欧洲午夜精品一级毛片在线播放

thinkphp6中insert方法不返回自增ID?數(shù)據(jù)庫操作變動之insert

2022-09-16 15:56 欄目:技術(shù)開發(fā) 查看(9766)

通常有這樣一個需求:發(fā)布一篇帖子,帖子中包含一些圖片等附件,所以在數(shù)據(jù)結(jié)構(gòu)上面需要把附件表和帖子表關(guān)聯(lián)起來;在發(fā)布帖子的時候先插入帖子表,返回帖子的id,然后再插入附件表記錄(使用帖子id關(guān)聯(lián)起來)。這樣的需求就需要先插入A表得到其自增的id號,然后再插入B表。

但某項(xiàng)目從thinkphp5升級到thinkphp6后,類似的流程就不能夠?qū)崿F(xiàn)了,發(fā)現(xiàn)返回的自增ID都變成了1,而不是具體的自增ID號。那么是不是thinkphp6刪除了這個功能呢?并不是,通過查看thinkphp關(guān)于數(shù)據(jù)庫操作方式發(fā)現(xiàn)insert方法參數(shù)有所調(diào)整。

thinkphp5關(guān)于insert方法節(jié)選如下:

?/**
* 插入記錄
* @access public
* @param mixed $data 數(shù)據(jù)
* @param boolean $replace 是否replace
* @param boolean $getLastInsID 返回自增主鍵
* @param string $sequence 自增序列名
* @return integer|string
*/
public function insert(array $data = [], $replace = false, $getLastInsID = false, $sequence = null){…}

thinkphp6關(guān)于insert方法節(jié)選如下:

/**
* 插入記錄
* @access public
* @param array $data 數(shù)據(jù)
* @param boolean $getLastInsID 返回自增主鍵
* @return integer|string
*/
public function insert(array $data = [], bool $getLastInsID = false){…}

從上面兩個對比可以看得出來,insert方法參數(shù)從4個改為2個,如果依然使用thinkphp5常用的insert($data,false,true)來返回自增ID會出現(xiàn)異常,因?yàn)閠hinkphp6的是否返回自增參數(shù)改為了該方法的第二個參數(shù);這個情況下應(yīng)該使用inset($data,true)來實(shí)現(xiàn)插入后返回自增。

tp5數(shù)據(jù)庫常用操作方法見:

thinkphp\library\think\db\Query.php

tp6數(shù)據(jù)庫常用操作方法見:

vendor\topthink\think-orm\src\db\BaseQuery.php

最后,如果沒有特別需求,已經(jīng)上線的項(xiàng)目不建議從thinkphp5升級到thinkphp6,特別是業(yè)務(wù)邏輯復(fù)雜的項(xiàng)目,需要調(diào)整的地方比較多。

與我們的項(xiàng)目經(jīng)理聯(lián)系
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請注明出處:thinkphp6中insert方法不返回自增ID?數(shù)據(jù)庫操作變動之insert - 微構(gòu)網(wǎng)絡(luò)
分享:
標(biāo)簽: