从 Play 2.5 (scala) 中的 Slick 开始
Starting with Slick in Play 2.5 (scala)
我刚刚开始使用 Play Scala 深入研究 Slick(从 Anorm 过渡)并立即面临启动问题和查询。
我有一个tableclass定义如下:
package model
import slick.driver.PostgresDriver.api._
import slick.lifted.{TableQuery, Tag}
case class ApiKey(id: Option[Int] = None, key: String)
object ApiKeys {
val apiKeys: TableQuery[ApiKeys] = TableQuery[ApiKeys]
}
class ApiKeys(tag: Tag) extends Table[ApiKey](tag, "api_key"){
def id = column[Int]("id", O.PrimaryKey, O.AutoInc) // This is the primary key column
def key = column[String]("key")
override def * = (id.?, key) <> (ApiKey.tupled, ApiKey.unapply)
}
注意:table 已经在 db
中创建
在控制器中,为了试用,我尝试插入值:
def index = Action {
db.withConnection { implicit connection =>
ApiKeys.apiKeys += ApiKey(key = "boo")
}
Ok("hello")
}
在这里我收到一个错误:
value += is not a member of slick.lifted.TableQuery[model.ApiKeys]
但是,我正在阅读的所有文档都建议这样做。
这里的例子之一:https://github.com/typesafehub/activator-hello-slick/blob/master/src/main/scala/CaseClassMapping.scala
我错过了什么?
尝试在您要使用它的控制器中导入 import driver.api._
。对我来说这会起作用:
def test = Action {
import driver.api._
db.run(ApiKeys.apiKeys += ApiKey(key = "boo"))
Ok("Hallo")
}
尽管将查询全部放入 Dao 中有很大帮助,因此 DB-Config 保留在应用程序的某些部分。
我刚刚开始使用 Play Scala 深入研究 Slick(从 Anorm 过渡)并立即面临启动问题和查询。
我有一个tableclass定义如下:
package model
import slick.driver.PostgresDriver.api._
import slick.lifted.{TableQuery, Tag}
case class ApiKey(id: Option[Int] = None, key: String)
object ApiKeys {
val apiKeys: TableQuery[ApiKeys] = TableQuery[ApiKeys]
}
class ApiKeys(tag: Tag) extends Table[ApiKey](tag, "api_key"){
def id = column[Int]("id", O.PrimaryKey, O.AutoInc) // This is the primary key column
def key = column[String]("key")
override def * = (id.?, key) <> (ApiKey.tupled, ApiKey.unapply)
}
注意:table 已经在 db
中创建在控制器中,为了试用,我尝试插入值:
def index = Action {
db.withConnection { implicit connection =>
ApiKeys.apiKeys += ApiKey(key = "boo")
}
Ok("hello")
}
在这里我收到一个错误:
value += is not a member of slick.lifted.TableQuery[model.ApiKeys]
但是,我正在阅读的所有文档都建议这样做。 这里的例子之一:https://github.com/typesafehub/activator-hello-slick/blob/master/src/main/scala/CaseClassMapping.scala
我错过了什么?
尝试在您要使用它的控制器中导入 import driver.api._
。对我来说这会起作用:
def test = Action {
import driver.api._
db.run(ApiKeys.apiKeys += ApiKey(key = "boo"))
Ok("Hallo")
}
尽管将查询全部放入 Dao 中有很大帮助,因此 DB-Config 保留在应用程序的某些部分。