2016-07-03 46 views
2

我正在使用Phantom 1.26.6。如何更新phantom-dsl中一行中的多個字段?

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

給摩托車,它已經存在於卡桑德拉的實例,我會 想更新模型的價值,製成容量。

// 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) 

我不知道是否有更好的方法來更新多個字段。

在此先感謝您的幫助!

回答

2

所有你需要做的就是使用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() 
相關問題