1. 程式人生 > >THINKPHP使用自動錶單變數更新資料表所存在的欄位不全問題

THINKPHP使用自動錶單變數更新資料表所存在的欄位不全問題

還是那句話:目前不得不使用thinkphp來開發網站。

ThinkPHP發展這麼些年,在網站開發方面還是有很多便利性的,文件也完整。但越來越感覺一個問題,使用ThinkPHP一旦遇到一些怪異的問題,很少能找到有效的解決答案。

下面就說一個例子:

在從表單更新一個數據表的時候,因為開發過程中給此資料表增加了新欄位,結果此欄位值無法寫到資料表中,使用 var_dump()查看錶單POST過去的變數,正常;使用var_dump()檢視自動建立的表單變數,類似 $data=$TheObj->Create(); var_dump($data); 程式碼,卻發現沒有包含POST過來的新欄位值。

然後就是排錯,已經排除了所謂 “表單變數名與資料表中的欄位名不一致”的問題。

在網上搜索了很久,所得到的最多的是官方的文件,都是入門般的教程,毫無用處。雖然可以用手動提取POST變數,手動建立save變數值的方法解決,但不解決這個怪問題,始終感覺不爽。最感到奇怪的是:難道就沒有人遇到這個問題麼?

因為ThinkPHP是國人自己寫的框架,很多東西沒有“道理”可講,還是得搜解決方法,最後終於找到了,如下:

在開發過程中,更改了表字段名稱,而快取未及時更新,導致系統判斷為無效欄位而被 unset 掉。所以在更改了表字段名稱之後,及時將 Runtime/Data 下的資料表快取清除。

真是暈了!這麼關鍵的問題,按道理講,ThinkPHP應該作為重點置頂提出,可以其文件無隻字片語。

最後,感謝那個總結此問題的人,其連線如下: