2016-03-25 18 views
1

まず最初に私はHaskellのnoobだから何か明白なことがあれば私は間違って申し訳ありません。Yesod - おそらくEntityId to Entity Entity

getObject1R :: Object1Id -> Handler Html 
:私のconfig /モデルが、私はタイプのハンドラを持っている場合、私はObject2には、オブジェクト1に関連する取得するにはどうすればよい

をファイルに

Object1 
    stuff Text 
    other Object2Id Maybe 

Object2 
    otherStuff Text 

は、私のようなものを持っていると言います

私が正しく理解していれば、runDB $ getと中身にあるとからに電話して、タイプを試したことがありますうまく整列していません。

おかげ

EDITここ

は、私は近いですが、正しくない感じる1回の試行されます。

object1 <- runDB $ get object1Id 
maybeObj2 <- case (object1Other object1) of 
    Just obj2Id -> Just $ runDB $ get obj2Id 
    Nothing -> Nothing 

EDIT 2(それを考え出しました)

だから私はそれをコンパイルして動作させる方法を考え出しました!コメントと助けをありがとう。ここ

は(ハンドラで)私のコードです:

(object1, maybeObject2) <- runDB $ do 
    object1 <- get404 object1Id 
    maybeObject2 <- case (object1Other object1) of 
     Just object2Id -> get object2Id 
     Nothing -> return Nothing 
    return (object1,maybeObject2) 

私はそれを行うには良い/高速化/簡単な方法があると確信しているが、これは働いていました。

+0

もし 'obj1Id :: Object1Id'を持っていたら、' maybeObj2Id < - fmap object1Otherget obj1Id'は( 'runDB $ do'ブロックの中で)' Maybe Object2Id'を与えるべきです。 'fmap's - db-monadに入るものと' Maybe'のもの – Carsten

+0

私はそれを試しませんでした...あなたはrunDBは必要ありませんか? – sbditto85

+0

内部にyesods 'Handler'?はい! – Carsten

答えて

1

私はそれをコンパイルして動作させる方法を考え出しました!コメントと助けをありがとう。ここ

は(ハンドラで)私のコードです:

(object1, maybeObject2) <- runDB $ do 
    object1 <- get404 object1Id 
    maybeObject2 <- case (object1Other object1) of 
     Just object2Id -> get object2Id 
     Nothing -> return Nothing 
    return (object1,maybeObject2) 

私はそれを行うには良い/高速化/簡単な方法があると確信しているが、これは働いていました。