我從來沒有用過DBIx :: Class,直到今天,所以我對它完全陌生。Perl DBIx :: Class可以重寫從數據庫檢索列的方式嗎?
我不確定這是否可能,但基本上我有一個在我的SQLite數據庫中有一個時間戳列的表。時間戳列的默認值是「CURRENT_TIMESTAMP」。 SQLite存儲在GMT時區,但我的服務器在CDT時區。
我的SQLite查詢來獲得正確的時區的時間戳是這樣的:
select datetime(timestamp, 'localtime') from mytable where id=1;
我想知道如果它在我的DBIx架構「MyTable的」,迫使它每一個申請的日期時間函數是可能的它是從數據庫中檢索「時間戳」字段的時間嗎? (),find(),但是我想知道是否有可能使它成爲可能,如果我使用search(),find()方法, all(),find_or_new()或將從數據庫中提取此列的任何函數,它會將datetime()SQLite函數應用於它?
DBIx :: Class似乎有很好的文檔 - 我想我只是這麼新而已,我找不到合適的地方/要搜索的東西。
在此先感謝!
我找到了DBIx :: Class :: InflateColumn :: DateTime文檔,並嘗試在我的列定義中放置timezone =>「America/Chicago」。儘管這似乎沒有什麼區別。 – BrianH 2010-03-10 17:43:39
它看起來像我可以使用inflate_column()方法,但似乎每當我檢索一個記錄集,我需要得到時間戳列的膨脹版本 - 有沒有辦法將充氣版本作爲默認值? – BrianH 2010-03-10 18:50:07
這看起來有點接近,但不確定如何使用它: http://search.cpan.org/~ribasushi/DBIx-Class-0.08120/lib/DBIx/Class/Manual/Cookbook.pod#Wrapping/overloading_a_column_accessor – BrianH 2010-03-10 19:15:10