Slick Join 左侧选项列
Slick Join Left Option column
我正在尝试使用 Slick 连接多个表,但在连接可选值时遇到困难。
我从 Rails 迁移的模型,用户有一个单独的配置文件,可以有一个地址,这是可选的。
如何使用 Slick 进行查询?
当前代码:
val query = for {
(((((dbUser, dbUserProfile), dbAddress), dbCountry), dbUserLoginInfo), dbLoginInfo) <-
users.filter(_.id === userID)
.join(userProfiles).on(_.id === _.id)
.joinLeft(addresses).on(_._2.addressId === _.id)
.joinLeft(countries).on(_._2.get.countryId === _.id)
.joinLeft(userLoginInfos).on(_._1._1._1.id === _.userId)
.joinLeft(loginInfos).on(_._2.get.loginInfoId === _.id)
} yield (dbUser, dbUserProfile, dbAddress, dbCountry, dbLoginInfo)
试试这个:
.joinLeft(countries).on(_._2.map(_.countryId) === _.id)
我正在尝试使用 Slick 连接多个表,但在连接可选值时遇到困难。
我从 Rails 迁移的模型,用户有一个单独的配置文件,可以有一个地址,这是可选的。
如何使用 Slick 进行查询?
当前代码:
val query = for {
(((((dbUser, dbUserProfile), dbAddress), dbCountry), dbUserLoginInfo), dbLoginInfo) <-
users.filter(_.id === userID)
.join(userProfiles).on(_.id === _.id)
.joinLeft(addresses).on(_._2.addressId === _.id)
.joinLeft(countries).on(_._2.get.countryId === _.id)
.joinLeft(userLoginInfos).on(_._1._1._1.id === _.userId)
.joinLeft(loginInfos).on(_._2.get.loginInfoId === _.id)
} yield (dbUser, dbUserProfile, dbAddress, dbCountry, dbLoginInfo)
试试这个:
.joinLeft(countries).on(_._2.map(_.countryId) === _.id)