Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 是的,删除级联_Haskell_Yesod - Fatal编程技术网

Haskell 是的,删除级联

Haskell 是的,删除级联,haskell,yesod,Haskell,Yesod,根据一个DeleteCascadetypeclass是几年前添加的。我只能假设这是为了添加到模型中。按照以下方式设置我的模型配置后: Field ... foreignId ForeignId DeleteCascade 我的应用程序编译得很好。但是DB模式不变,并且应用程序也不会级联删除。我应该(发抖)手动操作吗?有更好的办法吗 我使用YESod脚手架(Apple .Hask.Huff.Health.Health.St.SHS,…)为了利用DeleTeCaseDad,需要使用

根据一个
DeleteCascade
typeclass是几年前添加的。我只能假设这是为了添加到模型中。按照以下方式设置我的模型配置后:

Field
    ...
    foreignId ForeignId DeleteCascade
我的应用程序编译得很好。但是DB模式不变,并且应用程序也不会级联删除。我应该(发抖)手动操作吗?有更好的办法吗


我使用YESod脚手架(Apple .Hask.Huff.Health.Health.St.SHS,…)

为了利用DeleTeCaseDad,需要使用DeleTasCaseDead或DeleCasCADeDead函数。只有当您的类型有可用的DeleteCascade实例时,这些才起作用。获取这些信息的最简单方法是使用mkDeleteCascade函数。

使用现有答案,我花了一些时间才弄清楚如何使用deleteCascade。作为Yesod的初学者,我对Yesod没有一个概述

要获得有效的删除级联,您不需要更改模型中的任何内容。假设您的实体文件如下所示,您希望删除
条目

Entry
    title Text
Comment
    entry EntryId
您不必更改此实体文件

通常在
Model.hs
中引导实体的代码如下所示

share [ mkPersist sqlOnlySettings
      , mkMigrate "migrateAll" ]
    $(persistFileWith lowerCaseSettings "config/models")
添加mkDeleteCascade以获取实体的DeleteCascades实例

share [ mkPersist sqlOnlySettings
      , mkDeleteCascade sqlOnlySettings
      , mkMigrate "migrateAll" ]
    $(persistFileWith lowerCaseSettings "config/models")
一旦您想要删除条目,例如在
postDeleteEntryR
处理程序中,您必须使用
deleteCascade
deleteCascade,而不是delete

runDB $ deleteCascade entryId

使用
delete
的效果与以前相同。

谢谢您的回答。你能把范围扩大一点吗?我的问题是:普通用户不需要使用mkDeleteCascade。表示该文件仅供内部使用。我在deleteCascade上也找不到任何有用的文档。你能给我举一个简单的例子吗?关于内部使用或普通用户的评论不是应用于函数本身,而是应用于模块。您链接到的那些模块都由其他模块重新导出(例如,Yesod.Persist)。使用这些函数没有问题。不幸的是,我没有一个完整的例子。