从 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 保留在应用程序的某些部分。