下面由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視頻教程