如何在phantom-dsl中连续更新多个字段?

时间:2016-07-03 19:32:54

标签: scala cassandra phantom-dsl

我使用的是Phantom 1.26.6。

// id is the primary key
case class Motorcycle(id:String, model:String, made:String, capacity:Int)

给出一个已经存在于Cassandra中的摩托车实例,我愿意 喜欢更新模型,制作,容量的价值。

// The following does not compile.
 update.where(_.id.eqs(bike.id)).modify(_.model.setTo(bike.model))
 .modify(_.make.setTo(bike.make))
 .modify(_.capacity.setTo(bike.capacity))


 // The following works.   
 val updateQuery = update.where(_.id.eqs(bike.id))

 for {
    _ <- updateQuery.modify(_.model.setTo(bike.model)).future()
    _ <- updateQuery.modify(_.make.setTo(bike.made)).future()
    result <- updateQuery.modify(_.capacity.setTo(bike.capacity)).future()
  } yield (result)

我想知道是否有更好的方法来更新多个字段。

提前感谢您的任何帮助!

Shing

1 个答案:

答案 0 :(得分:4)

您所要做的就是使用and运算符来链接多个更新语句。这将在单个查询中执行所有操作。

 val updateQuery = update.where(_.id eqs bike.id)
   .modify(_model setTo bike.model)
   .and(_.make setTo bike.made)
   .and(_.capacity setTo bike.capacity)
   .future()