4

我在 Event 上定义了一个可选的外键,它转到 EventType。我想查询所有事件,即使是那些具有无(空)事件类型的事件。这是在 Event 上定义的外键。

def eventTypeId = column[Option[Long]]("event_type_id")
def eventType = foreignKey("event_type", eventTypeId, EventTypes.eventTypes)(_.id)

我的初始查询如下,但它只返回那些确实设置了外键的记录,因为外键是可选的。如何?

(for {
   p <- events
   e <- p.eventType
} yield (p, e))

我希望在没有外键集的情况下查看所有带有 AND 的事件。

4

1 回答 1

3

听起来您要求的是让 Slick 在这种情况下产生外部连接。我意识到您已将此标记为 Slick 2 问题,但该增强功能计划用于 Slick 3.2:https ://github.com/slick/slick/issues/179

同时,您可以自己管理加入。例如:

events.leftJoin(eventTypes).on(_.eventTypeId === _.id).
map { case (e, et) => (e, et.name.?) }

...这最终会给你一个结果Seq[(Event, Option[String])](或类似的,假设你有 a namethat's a String)。

于 2015-05-14T13:28:43.347 回答