Bu yüzden/config/modellerim şunun gibi görünüyor. Persistent Yesod'da çoktan çoğa yapmanın en iyi yolu nedir?
Person
name Text
Car
name Text
PersonCar
personId PersionId eq
carId CarId eq
UniquePersonCar personId carId
veritabanında girişler, sırasıyla
Person "Superman"
Car "SUV"
Car "Ford"
Person "Batman"
olduğunu varsayın.
Şu anda bunları İşleyicimde bağlamak için yapıyorum.
runDB $ do
person <- selectFirst [PersonName ==. "Batman"] []
car <- selectFirst [Carname ==. "SUV"] []
let Entity personId _ = case person of
Just info -> infor
Nothing -> error "no such Person"
let Entity carId _ = case car of
Just info -> infor
Nothing -> error "no such Car"
_ <- insert $ PersonCar personId carId
Bunu yapmanın daha kolay bir yolu var mı? Böyle bir ifade yapmak için bir sözleşme var mı?
, o beni hatayı ayrıştırmak herhangi bir fikir veriyor:
Bu kısadır? 'postFromR :: Handler RepHtml postFormR FormSuccess res ait vaka sonucunu do = -> _ <- runDB $ insert $ PersonCar persionId carId _ -> $ (logError) "hata"' – HHC
@HHC, Eklediğim bir Daha sonra bir dönüş ifadesi gerektiren, ekleme satırının çevresini bloke edin. Bir yesod kurulumu ile test edilmiştir, kodu tekrar alın. Model adlarınızı kontrol edin (PersonId yerine PesionId, Personon yerine PesonCar) –