Даже если ответ уже можно найти в комментариях, я хотел бы привести полный пример.
Предполагая, что у нас есть модель Person
, следующая функция возвращает запись для персоны сзаданный идентификатор (если он существует):
import Database.Persist.Types (PersistValue(PersistInt64))
getByIntId :: Integral i => i -> Handler (Maybe Person)
getByIntId i = runDB $ get $ Key $ PersistInt64 (fromIntegral i)
import
необходим для того, чтобы мы могли создать постоянную версию целого числа.fromIntegral
преобразует любое целое число в ожидаемый тип Int64
.
Обновление : поскольку Yesod 1.2 PersistValue
живет в модуле Database.Persist.Types
, до 1.2 оно было Database.Persist.Store
( Документация API ).
Обновление 2 : начиная с версии 2.0.2 имеется две встроенные функции для преобразования из / в ключи базы данных: toSqlKey
и fromSqlKey
( API-документация , см. ответ от hhefesto для примера).