Предполагая, что вы не можете использовать соединение и вам нужно работать с двумя действиями (двумя DBIO
s), вы можете объединить два действия в одно:
// Combine two actions into a single action
val pairs: DBIO[ ( Seq[Person], Seq[Address] ) ] =
(person.result).zip(address.result)
(zip
- лишь один из многих комбинаторов , которые вы можете использовать для управления DBIO
).
Оттуда вы можете использовать DBIO.map
для преобразования пары в нужную структуру данных.
Например:
// Use Slick's DBIO.map to map the DBIO value into a sequence of profiles:
val profiles: DBIO[Seq[Profile]] = pairs.map { case (ppl, places) =>
// We now use a regular Scala `zip` on two sequences:
ppl.zip(places).map { case (person, place) => Profile(person, place) }
}