thinkphp的CURD中,使用save方法時(shí)會(huì)出現(xiàn)一個(gè)奇怪的問(wèn)題掰曾,即如果數(shù)據(jù)沒(méi)有更新(與原數(shù)據(jù)相同)旭蠕,返回值判斷為false。其實(shí)很久之前就發(fā)現(xiàn)了這個(gè)問(wèn)題旷坦,一度以為是官方代碼的問(wèn)題,但是一直拖延到最近才想到要去解決這個(gè)問(wèn)題佑稠。不得不說(shuō):“明日復(fù)明日秒梅,明日何其多。事事待明日舌胶,萬(wàn)事皆蹉跎捆蜀。”幔嫂,與君共勉辆它!
在官網(wǎng)上搜索了這個(gè)問(wèn)題之后,發(fā)現(xiàn)官方已經(jīng)解決了這個(gè)問(wèn)題履恩,原本的判斷:
$result = $Model->where('id=1')->save($data);if($result) {echo'success';}else{echo'false';}
解決辦法: 使用“===”判斷返回值即可
$result = $Model->where('id=1')->save($data);if($result !==false) {echo'success';}else{echo'false';}
問(wèn)題解決了锰茉,但是還是沒(méi)有搞明白原因,于是又去看了一下save方法實(shí)現(xiàn)的源代碼(3.2.3版本 mysql驅(qū)動(dòng)):
技術(shù)分享
Tp中模型的底層是由pdo類(lèi)封裝而來(lái)的切心,所以繼續(xù)查找pdo中的rowCount方法: