1
加入比方說,我有一個包含涉及其他表ID的表。我想獲得所有的對象,因爲這些表的組合構成了一個對象。當然我會加入他們,但我有一個問題,當一些領域是可選的。所以我想用這個「全部」。Squeryl與空列
from(mainTable,
optionalFieldTable,
optionalFieldTable,
requiredFieldTable1,
requiredFieldTable2)((main,o1,o2,r1,r2) =>
where(
(main.someId1 === r1.id) and
(main.someId2 === r2.id) and
(main.optId1.inhibitWhen(main.optId1 == None) === o1.id) and
(main.optId2.inhibitWhen(main.optId2 == None) === o2.id))
select(main,o1,o2,r1,r2)
).toList
上面的給我一個空列表。如果我一起刪除查詢中的可選字段,儘管它起作用。所以我想知道是否有一種特殊的方法來測試可選的id是None還是一些除了禁止之外呢?
我懷疑它有事情做與返回的元組,因爲它試圖返回O1和O2對象,而不是選項[01]和選項[O2]
這是偉大的,沒有意識到聯接語法有這個能力。你知道我將如何實現我的orderBy函數嗎? 'orderBy(main.category,main.name)'''''''''''''''''''''''''''''''''' – kingdamian42
'orderBy'應該在這種情況下工作。我以前肯定使用過它,但我不記得是否在返回Tuple時嘗試過它。我知道它不完全相同,但如果這不起作用,你總是可以在返回的列表中使用'sortWith'。 – jcern
我用sortWith但有人告訴我,這是一個相當不好的做法,這樣做的,因爲它沒有采取DBS索引的優勢。看起來,當我使用orderBy後,選擇它不起作用,因爲on還沒有被應用。但之後無效。 – kingdamian42