我是Scala世界和Play框架的新手。在我的scala模型中,我能够根据GET方法从URL获取值。某些值来自单个选择,而其他值来自多个选择。对于单选,我知道如何检索单个值,但如何从多个选择中检索值? :
我的网址如下:?authorId=1&booksId=1,4,6§ion=1
val params = request.queryString.map { case (k, v) => k -> v(0) }
然后我检索值并在数据库中获取它们:
...
(c.authorId === params.get("authorId ").?) and //from a single select : it works
(c.booksId in params.get("booksId").?) and // from a multiple select : i dont know how since i cannot use a string !
params.get(" booksId")包含 ids = 1,4,6
的列表如何使用 语句中的获取数据库中的booksId?
PS:我正在使用Squeryl
由于
答案 0 :(得分:1)
params.get
返回Option[String]
,因此您无法直接在params.get("booksId")
的结果上调用String方法。相反,您需要在选项上进行映射:
params.get("booksId").map { booksId =>
val bookIds = booksId.split(",").toList
c.booksId in bookIds
}
这将返回一个选项[WhateverSquerylReturns]。要获取定义的Option值,请参阅Option.getOrElse。