从 Scala 中的理解创建嵌套对象
Create a nested objects from for-comprehension in Scala
我有一个案例 class 正在根据一些数据库操作进行实例化:
case class FullFight(fight: FightsRow, firstBoxer: BoxersRow,
secondBoxer: BoxersRow, bookiesOdds: Seq[BookiesOddsRow])
val tupledJoin = for {
f <- Fights
b1 <- Boxers if f.firstBoxerId === b1.id
b2 <- Boxers if f.secondBoxerId === b2.id
} yield (f, b1, b2)
db.run(tupledJoin.result).map(_.map(FullFight.tupled))
问题是我不想在此查询中指定任何 bookiesOdds(它们在其他查询中填写)。相反,我想创建一个包含空序列 Seq[BookiesOddsRow] 的元组 tupledJoin 来创建我的 case class' 对象。有什么方法可以将其混合在理解循环中吗?我想我需要这样的东西:
val seq: Seq[BookiesOddsRow] = Nil
val tupledJoin = for {
f <- Fights
b1 <- Boxers if f.firstBoxerId === b1.id
b2 <- Boxers if f.secondBoxerId === b2.id
} yield (f, b1, b2, seq)
这可能吗?如何正确实施?
此致
我认为您只能在 for comprehension 中使用 DB 操作。
你可以试试这个(未测试):
val tupledJoin = for {
f <- Fights
b1 <- Boxers if f.firstBoxerId === b1.id
b2 <- Boxers if f.secondBoxerId === b2.id
bookiesOdds <- DBIOAction.successful(Seq())
} yield (f, b1, b2, bookiesOdds)
我有一个案例 class 正在根据一些数据库操作进行实例化:
case class FullFight(fight: FightsRow, firstBoxer: BoxersRow,
secondBoxer: BoxersRow, bookiesOdds: Seq[BookiesOddsRow])
val tupledJoin = for {
f <- Fights
b1 <- Boxers if f.firstBoxerId === b1.id
b2 <- Boxers if f.secondBoxerId === b2.id
} yield (f, b1, b2)
db.run(tupledJoin.result).map(_.map(FullFight.tupled))
问题是我不想在此查询中指定任何 bookiesOdds(它们在其他查询中填写)。相反,我想创建一个包含空序列 Seq[BookiesOddsRow] 的元组 tupledJoin 来创建我的 case class' 对象。有什么方法可以将其混合在理解循环中吗?我想我需要这样的东西:
val seq: Seq[BookiesOddsRow] = Nil
val tupledJoin = for {
f <- Fights
b1 <- Boxers if f.firstBoxerId === b1.id
b2 <- Boxers if f.secondBoxerId === b2.id
} yield (f, b1, b2, seq)
这可能吗?如何正确实施?
此致
我认为您只能在 for comprehension 中使用 DB 操作。 你可以试试这个(未测试):
val tupledJoin = for {
f <- Fights
b1 <- Boxers if f.firstBoxerId === b1.id
b2 <- Boxers if f.secondBoxerId === b2.id
bookiesOdds <- DBIOAction.successful(Seq())
} yield (f, b1, b2, bookiesOdds)