要使用 db side autoinc id,大多数事情建议使用没有 id 的自定义(forInsert)投影,现在我想使用相同的投影进行更新,但我不知道如何(或者是否可能)
class Users extends Table[User]("user") {
def id = column[UserId]("id", O.PrimaryKey, O.AutoInc)
def email = column[String]("email")
def password = column[String]("password")
def * = id.? ~ email ~ password <>(User, User.unapply _)
def forInsert = email ~ password <>( {
(email, password) => User(None, email, password)
}, {
u: User => Some((u.email, u.password))
})
def uniqueEmail = index("idx_email", email, unique = true)
}
这可以让你做
Users.forInsert.insert(User(None, "foo", "bar"))
现在给定一个 id 和一个 User 我可以更新一行而不必在 User 中设置 id 吗?
Query(Users).filter(_.id == id).magic(Users.forInsert).update(User(None, "foo", "bar"))