2014-10-15 4 views
2

오늘 아침에 Yesque 앱에서 Esqueleto를 설정하기 시작했습니다. 나는 정말 LeftOuterJoin을 수행하려고 시도하고 있지만, 기본을 작동시키기 위해 쿼리를 상당히 단순화했습니다. 나는 그것을 얻을조차 수 없다. Database.Persist.Query와 충돌이 없는지 확인하기 위해 일부 쿼리 advice from a Github issue을 따라 Yesod를 가져 오지 않는 별도의 파일로 쿼리를 추출했습니다. Esqueleto를 구성 할 때 누락 된 것이 있습니까?내 모델로 Esqueleto를 설정하는 동안 오류가 발생했습니다.

FWIW, 나는 Yesod 1.4.0, Persistent 2.1 & Esqueleto 2.1을 사용하고 있습니다. 여기

Queries.hs:9:15: 
    No instance for (Database.Esqueleto.Internal.Sql.SqlSelect 
         (SqlExpr (Entity UrlEntry), SqlExpr (Entity UrlEntryData)) 
         (Entity UrlEntry)) 
     arising from a use of ‘select’ 
    In the expression: select 
    In the expression: 
     select 
     $ from 
     $ \ (entry `InnerJoin` entryData) 
      -> do { on 
        $ entry ^. UrlEntryId ==. entryData ^. UrlEntryDataUrlEntryId; 
        return (entry, entryData) } 
    In an equation for ‘findEntries’: 
     findEntries 
      = select 
      $ from 
       $ \ (entry `InnerJoin` entryData) 
        -> do { on 
          $ entry ^. UrlEntryId ==. entryData ^. UrlEntryDataUrlEntryId; 
          .... } 

내 모델입니다 :

내가 겪고있어 오류가 발생하면이 기능을 변경해야

findEntries :: SqlPersistT Handler [Entity UrlEntry] 
findEntries = select $ from $ \(entry `InnerJoin` entryData) -> do 
     on $ entry ^. UrlEntryId ==. entryData ^. UrlEntryDataUrlEntryId 
     -- where_ (entry ?. UrlEntryUserId ==. valkey authId) 
     return (entry, entryData) 
+0

몰라,하지만 난 여기, 내 장난감 학습 - yesod 프로젝트에 esquelito을 사용하고 있습니다 : https://github.com/bburdette/hackstarter/blob/master/Handler/Project.hs 나는 그것 esquelito 1.4 또는 뭔가를 사용하여 생각 (nixos에 컴파일 그래서 패키지 버전과 조금 wierd 수 있습니다). – Bzzt

답변

1

: 여기

UrlEntry 
    url String 
    shortCode String 
    ShortCode shortCode 
    visits Int default=0 
    userId UserId Eq 
    deriving Eq Show 
UrlEntryData 
    screenshot String Maybe 
    title String Maybe 
    favicon String Maybe 
    contentType String 
    urlEntryId UrlEntryId Eq 
    deriving Eq Show 
User 
    email Text 
    password Text Maybe 
    verkey Text Maybe 
    verified Bool 
    UniqueUser email 
    deriving Eq Show Typeable 

그리고 나의 쿼리입니다 서명. 그것이 도움이 될 것입니다 경우

findEntries :: SqlPersistT Handler [(Entity UrlEntry, Entity UrlEntryData)]