以下由thinkphp教學專欄為大家介紹關於最新版ThinkORM對於時間欄位的調整,希望對需要的朋友有幫助!
不少用戶在升級6.0最新版本框架後出現了獲取不到時間字段原始值的情況,這是因為think-orm庫的一個最新調整導致的。
在最新的ThinkORM中,欄位類型和時間欄位的自動處理不再納入獲取器範疇,而是在查詢到結果後的第一時間就進行了處理,避免以後每次調用資料的時候都要進行一次額外的檢測和處理。而由於不再納入獲取器,所以導致無法取得這些欄位的原始值,包括設定了類型轉換的欄位和自動時間處理欄位。
時間欄位的自動處理是框架提供的實作時間欄位(包括create_time和update_time,支援自訂欄位名稱)的自動寫入和自動輸出轉換功能。
如果你需要取得時間欄位的原始值,那麼需要關閉自動時間欄位處理功能,也就是設定autoWriteTimestamp屬性為false,然後對時間欄位自訂擷取器接手時間欄位的輸出,並且記得一旦關閉自動時間欄位處理,時間欄位的資料寫入必須手動寫入。
如果你希望時間欄位自動寫入處理,但不希望進行自動格式化輸出,可以設定dateFormat屬性為false。如果在資料庫設定檔中設定的話,應該如下設定:
// 自动写入时间戳字段 // true为自动识别类型 false关闭 // 字符串则明确指定时间字段类型 支持 int timestamp datetime date 'auto_timestamp' => true, // 时间字段取出后的默认时间格式 'datetime_format' => false,
think-orm升級到最新版本已經修正上述問題,但注意取得原始資料最好是用getOrigin方法取代getData方法,如果你需要在定義的獲取器方法中讀取原始的時間字段數據,應該用$this->origin['create_time']而不是用$data['create_time']或$this->data['create_time'] 。
#相關推薦:最新的10個thinkphp影片教學
以上是關於最新版ThinkORM對於時間欄位的調整的詳細內容。更多資訊請關注PHP中文網其他相關文章!