Vì vậy,/config/mô hình của tôi trông như thế này.Cách tốt nhất để làm nhiều người trong nhiều người trong Yesod dai dẳng là gì?
Person
name Text
Car
name Text
PersonCar
personId PersionId eq
carId CarId eq
UniquePersonCar personId carId
Giả sử các yếu tố đầu vào cơ sở dữ liệu là Person "Batman"
Person "Superman"
Car "SUV"
Car "Ford"
tương ứng.
Tôi hiện đang thực hiện việc này để liên kết chúng trong Trình xử lý của tôi.
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
Có cách nào dễ hơn để thực hiện việc này không? Có một quy ước để làm biểu hiện như vậy không?
tôi đang làm nó dưới một handler, nó đem lại cho tôi phân tích lỗi, bất kỳ ý tưởng? 'postFromR :: Handler RepHtml postFormR = làm trường hợp kết quả của FormSuccess res -> _ <- runDB $ chèn $ PersonCar persionId carId _ -> $ (LogError) "lỗi" ' – HHC
@HHC, tôi đã thêm một chặn xung quanh dòng chèn, cần biểu thức trả về sau đó. Thử nghiệm với cài đặt có sẵn, hãy lấy lại mã. Kiểm tra tên model của bạn (PesionId thay vì PersonId, PesonCar thay vì PersonCar) –