2017-10-03 3 views
1

kann ich ein Feld einer Zeile mit entryId in Esqueleto wie dies ändern. Ich möchte in der Lage sein, so etwas zu schreiben:eine Zeile Aktualisierung mit spezifischer ID in Esqueleto

updateById entryId $ \entry -> 
    set entry [ EntryFoo =. val bar ] 

ich von mir selbst diese Helfer zu schreiben versuchte, fand aber, dass ich weiß nicht, wie ^. EntryId in allgemeiner Weise zu schreiben (dh eine Art und Weise, würde für jeden Eintragstypen funktionieren). Ist es möglich? Oder fehlt mir etwas und updateById existiert schon in Esqueleto?

Antwort

0

Für Entity, ^. EntityId kann als ^. persistIdField geschrieben werden (das persistIdField Feld ist ein Verfahren der PersistEntity Klasse). So kann Ihre Funktion wie folgt geschrieben werden:

0

Ich bin definitiv kein Experte auf esqueleto, aber ich würde raten:

updateById entryId upd = update $ \entry -> do 
          upd entry 
          where_ (entry ^. EntryId ==. val entryId) 

das Problem lösen soll.

+0

Sicher, löst es das Problem für eine bestimmte Tabelle ("Entry"), aber ich möchte eine Lösung, die für jede Tabelle funktionieren würde. I.e. Ich brauche 'updateById :: Key a -> _ -> _ ', während deine Funktion' updateById :: Key Entry -> _ -> _' ist. – Artyom

Verwandte Themen