2013-06-21 40 views
1

我的數據模型由用戶組成。用戶可以有多個文件夾,並且一個文件夾可以包含多個帳戶。Squeryl中的多個左連接

我想運行一個查詢,它將一次返回所有上述信息。

與文件夾返回用戶查詢看起來是這樣的:

val usersWithFolder = from(MySchema.users, MySchema.folders)((u, f) => 
         where(u.idField === f.userId) select ((u, f))) 

而且我想這樣的查詢:

join(MySchema.users, MySchema.folders.leftOuter, MySchema.accounts.leftOuter)((u, f, a) => 
         select(u, f, a) 
         on (u.idField === f.map(_.userId), ???)) 

如何映射帳戶添加到文件夾?我無法使用f.idField === a.map(_.folderId),因爲它看起來像fList

在此先感謝

弗洛

回答

1

我認爲f將是一個Option,所以這有點像這應該工作:

join(MySchema.users, 
    MySchema.folders.leftOuter, 
    MySchema.accounts.leftOuter)((u, f, a) => 
    select(u, f, a) 
    on (u.idField === f.map(_.userId), 
     f.map(_.idField) === a.map(_.folderId)) 
)