Итак, мои/config/models выглядят так.Какой лучший способ сделать много-ко-многим в Persistent Yesod?
Person
name Text
Car
name Text
PersonCar
personId PersionId eq
carId CarId eq
UniquePersonCar personId carId
Предположим, входы в базе данных являются Person "Batman"
Person "Superman"
Car "SUV"
Car "Ford"
соответственно.
В настоящее время я делаю это, чтобы связать их с моим обработчиком.
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
Есть ли более простой способ сделать это? Существует ли конвенция для такого выражения?
Я делаю это под обработчиком, это дает мне разобрать ошибки, какие-то идеи? 'postFromR :: Handler RepHtml postFormR = сделать случай результат FormSuccess Рез -> _ <- runDB $ вставка $ PersonCar persionId carId _ -> $ (LogError) "ошибка"' – HHC
@HHC, я добавил блок вокруг строки вставки, после чего требуется обратное выражение. Протестировано с помощью установки Yesod, снова возьмите код. Проверьте имена своих моделей (PesionId вместо PersonId, PesonCar вместо PersonCar) –