Yesod持久化:仅具有id行的SQLite表
我的模型如下所示:Yesod持久化:仅具有id行的SQLite表,sqlite,haskell,yesod,persistent,Sqlite,Haskell,Yesod,Persistent,我的模型如下所示: TestGroup TestPerson firstName Text lastName Text testGroupId TestGroupId TestObject objectName Text testGroupId TestGroupId 在本例中,TestGroup表中唯一的内容是testGroupId。多个测试人员可以在一个组中一对多,一个组可以有多个测试对象,也可以是一对多 以下代码编译并运行,但产生SQLite错误:
TestGroup
TestPerson
firstName Text
lastName Text
testGroupId TestGroupId
TestObject
objectName Text
testGroupId TestGroupId
在本例中,TestGroup表中唯一的内容是testGroupId。多个测试人员可以在一个组中一对多,一个组可以有多个测试对象,也可以是一对多
以下代码编译并运行,但产生SQLite错误:
postAddTestPersonR :: Handler Value
postAddTestPersonR = do
newTestPerson <- parseJsonBody :: Handler (Result TestPerson)
case newTestPerson of
Success s -> runDB $ do
newTestGroup <- insert $ TestGroup
_ <- insert $ TestPerson (firstName s) (lastName s) newTestGroup
return $ object ["message" .= "it worked"]
Error e -> return $ object ["message" .= e]
如果我打开数据库并以这种方式手动添加它,它就会工作,我会得到一个新的ID号:
INSERT INTO test_group VALUES (null);
我是否应该尝试在原始SQL中执行此操作,或者是否有一种方法可以通过persist解决此问题。一个简单的解决方案就是在TestGroup中添加一个虚拟变量,并插入$TestGroup,但这有点不太妥当,我想知道是否有办法解决这个问题。这是Yesod的内部问题。问题已经解决:除了使用虚拟变量,我不知道现在是否有其他解决方案。有人建议我制造一个问题
INSERT INTO test_group VALUES (null);