具有后端特定运算符的持久性示例

JP *_*mau 11 haskell yesod

我想在持久化中执行LIKE查询,我正在使用sqlite.yesod书给出了使用原始SQL来做的一个例子,但是说:

由于Persistent 0.6中添加了一个允许特定于后端的运算符的特性,您可以直接以正常语法表示LIKE运算符

但是我找不到一个例子.有人会举例说明使用像LIKE这样的特定运算符selectList或类似的东西是什么意思吗?

谢谢!

Mic*_*man 8

我知道我以前用过它,但我不记得在哪里.无论如何,一个简单的例子(不是GHC检查,道歉)将是:

selectList [Filter PersonName (Left $ PersistText "%Michael%") (BackendSpecificFilter "ILIKE")] []
Run Code Online (Sandbox Code Playgroud)

显然你可以创建一些辅助函数,例如:

icontains field val = Filter field (Left $ PersistText $ T.concat ["%", val, "%"]) (BackendSpecificFilter "ILIKE")
selectList [Personname `icontains` "Michael"] []
Run Code Online (Sandbox Code Playgroud)

  • 这些都不适合我,这里是做了什么:`like field val = Filter field(Left $ T.concat ["%",val,"%"])(BackendSpecificFilter"like")` (3认同)