我也有同样的问题,我想知道是否有一些“书架式”的方法可以做到这一点。我实现了一些基于knex的代码,它可以工作。也就是说,它输出单个
选择
具有给定联接的语句。
将其转换为您的示例,大致如下:
const exampleVal = Incident.forge();
const toSiteAt = exampleVal.siteAttendance();
const incTable = toSiteAt.relatedData.parentTableName;
const saTable = toSiteAt.relatedData.targetTableName;
const saKey = toSiteAt.relatedData.targetIdAttribute;
const forKeySA = toSiteAt.relatedData.foreignKey;
const toSite = toSiteAt.site();
const siteTable = toSite.relatedData.targetTableName;
const siteKey = toSite.relatedData.targetIdAttribute;
const forKeyS = toSite.relatedData.foreignKey;
const toContact = toSite.siteSupervisor();
const contctTable = toContact.relatedData.targetTableName;
const contctKey = toContact.relatedData.targetIdAttribute;
const forKeyC = toContact.relatedData.foreignKey;
return Incident.query( qb => {
qb.innerJoin(saTable, `${incTable}.${forKeySA}`, `${saTable}.${saKey}`)
.innerJoin(siteTable, `${saTable}.${forKeyS}`, `${siteTable}.${siteKey}`)
.innerJoin(contctTable, `${siteTable}.${forKeyC}`, `${contctTable}.${contctKey}`)
.whereIn(`${contctTable}.id`, myContactId); // <1>
}).fetchAll();
<1>这是你的
联系人ID
其他人的问题是:真的有更多的“书架y”方法来解决这个问题吗?