2015-05-14 25 views
4

我有一個可選的外鍵定義在事件上去EventType。我想要查詢所有事件,即使是那些具有None(null)事件類型的事件。這是Event上定義的外鍵。如何使用可選的外鍵查詢Slick以返回所有帶有和沒有關係的記錄?

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

我希望看到所有的事件與沒有外鍵設置。

回答

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])]結果(或類似的,假設你有一個name這是一個String)。

+0

非必需的外鍵應該更容易支持。你給我的作品雖然有效,所以我會一直這樣做,謝謝! – Phil

+0

這個答案似乎是正確的,標誌着菲爾:) – cvogt

+0

是的它正確。 – Phil

相關問題