两个表之间的连接就像
一样 (for {
(computer, company) <- Computers leftJoin Companies on (_.companyId === _.id)
if computer.name.toLowerCase like filter.toLowerCase()
}
但是如果需要在更多表之间加入,那么尝试下面的方法是正确的,但是不起作用
(for {
(computer, company,suppliers) <- Computers leftJoin Companies on (_.companyId === _.id)
//not right leftjoin Suppliers on (_.suppId === _.id)
if computer.name.toLowerCase like filter.toLowerCase()
}
答案 0 :(得分:30)
第一个连接导致Query返回元组。其中一个元组组件具有您要用于第二个连接的外键。在获取其字段之前,您需要在第二个连接条件中获取此组件。如果公司是表格,那么该字段就会显示如下:
(for {
((computer, company),suppliers) <- Computers leftJoin Companies on (_.companyId === _.id) leftJoin Suppliers on (_._2.suppId === _.id)
if computer.name.toLowerCase like filter.toLowerCase()
} yield ... )
答案 1 :(得分:3)
我想你想要这个:
for {
(computer, company) <- Computers leftJoin Companies on (_.companyId === _.id)
(supp, _) <- company innerJoin Suppliers on (_.suppId === _.id)
if computer.name.toLowerCase like filter.toLowerCase()
} yield (computer, company, supp)
当然,我正在对你的模型做出假设。不确定供应商是否与公司或计算机相关联。