2016-01-29 32 views
0

我試圖從MySQL數據庫返回時間格式字段的列表,並使用Cake \ I18n \ Time類來操縱它們。目前,當從數據庫中獲取數據時,當前日期用於這些字段。我想爲他們設定我自己的日期(因爲數據可能會有多個日期),但我似乎無法找到一個優雅的解決方案。使用Cake I18n Time與MySQL時間字段

到目前爲止,在測試過程中我的解決方案是使用Time::setTestNow($now),然後在我的實體創建一個函數,正確設定日期,像這樣設置日期:

$newTime = new Time(); 
$newTime->hour($savedTime->format("H")) 
->minute($savedTime->format("i")) 
->second($savedTime->format("s")); 

顯然,這似乎是一個相當繁瑣的方法爲這些字段設置日期。我的應用程序中還有其他功能需要比較日期和時間(日期可以從另一個表中獲取),所以Time::setTestNow()似乎是錯誤的方式來正確設置正確的日期,並將日期,月份和年份設置爲每個新的時間似乎也是一個繁瑣的解決方案。

是否有其他方法可用於設置從數據庫中提取時間的日期?我寧願在我的模型中有正確的時間,而不是每次我想使用它時都要轉換它)。

謝謝。

+0

我不明白我們的問題?你有存儲在數據庫中的日期,他們不是你想要的,你想在迴應它們時操縱它們嗎?爲什麼不把正確的日期存儲在第一位?數據庫中日期的格式和字段類型是什麼? – burzum

+0

嗨,我有時間作爲時間字段存儲在數據庫中,日期作爲日期字段存儲在另一個表中。我需要能夠在時間上設置正確的日期,以便我可以對它們進行比較。 –

+0

這聽起來像是一個有缺陷的設計方法。 – burzum

回答

0

有沒有其他方法可以用來設置從數據庫中提取時間的日期?

Entity Accessors.請參閱virtual properties以執行此權利。例如,從書採取:

class Article extends Entity 
{ 
    protected function _getTitle($title) 
    { 
     return ucwords($title); 
    } 
} 

只是Concat的自定義getter中的日期和時間。

我有時間作爲時間字段存儲在數據庫中,日期作爲日期字段存儲在另一個表中。我需要能夠在時間上設置正確的日期,以便我可以對它們進行比較。

這聽起來像是一個糟糕的設計。爲什麼你不能將它們保存在第三個字段中保存,如果你必須保持它們分開?但是,您可能可以將數據庫查詢本身的字段(Combining (concatenating) date and time into a datetime)連接起來,並使用CakePHP ORMs類型映射將日期時間類型映射到它。也許你很幸運,它會自動將它檢測爲正確的類型。