Может ли Perl DBIx :: Class переопределить способ извлечения столбца из базы данных? - PullRequest
5 голосов
/ 10 марта 2010

До сегодняшнего дня я никогда не использовал DBIx :: Class, поэтому я совершенно новичок в этом.

Я не уверен, возможно ли это или нет, но в основном в моей базе данных SQLite есть таблица, в которой есть столбец отметки времени. Значением по умолчанию для столбца отметки времени является «CURRENT_TIMESTAMP». SQLite хранит это в часовом поясе GMT, но мой сервер находится в часовом поясе CDT.

Мой запрос SQLite для получения метки времени в правильном часовом поясе выглядит так:

select datetime(timestamp, 'localtime') from mytable where id=1;

Мне интересно, возможно ли в моей схеме DBIx для «MyTable» заставить его применять функцию datetime каждый раз, когда он извлекает поле «timestamp» из базы данных?

В cookbook похоже, что это возможно сделать при использовании функции -> search (), но мне интересно, возможно ли сделать это, если я использую search () , find (), all (), find_or_new () или любая функция, которая будет извлекать этот столбец из базы данных, будет применять к нему функцию SQLite datetime ()?

DBIx :: Класс, кажется, имеет отличную документацию - я думаю, что я новичок в этом, я не могу найти нужные места / вещи для поиска.

Заранее спасибо!

1 Ответ

2 голосов
/ 16 марта 2010

Я использовал InflateColumn :: DateTime таким образом и с отметкой времени, и я могу подтвердить, что это работает, но мне интересно, есть ли у вас это задом наперед.

Если ваш столбец в формате UTC, отметьте столбец UTC, и тогда вы должны указать время UTC при его загрузке. Затем, когда вы устанавливаете time_timezone в DateTime (предположительно, это будет связано с выходными данными - вы заботитесь о локальном зонировании на выходе), вы можете установить его на местное время, и оно произведет необходимую настройку.

...