我无法理解如何在书架模型中定义关系。
这是我的表的架构:
account table
+----+-------------+
| id | username |
+----+-------------+
| 30 | someuser |
| 31 | anotheruser |
| 32 | dude |
+----+-------------+
employee table
+----+-------------------+
| id | email |
+----+-------------------+
| 2 | some@one.com |
| 3 | fake@employee.com |
+----+-------------------+
account_manager table
+----+------------+-------------+
| id | account_id | employee_id |
+----+------------+-------------+
| 1 | 30 | 2 |
| 2 | 31 | 3 |
| 3 | 32 | 3 |
+----+------------+-------------+
书架的文档有点难以理解,但这似乎应该做我想要的,但事实并非如此。
class Account extends Bookshelf.Model {
manager() {
return this.hasOne('Employee').through('AccountManager');
}
}
class Employee extends Bookshelf.Model {
accounts() {
return this.hasMany('Account').through('AccountManager');
}
}
class AccountManager extends Bookshelf.Model {
account() {
return this.hasOne('Account', 'id');
}
employee() {
return this.hasMany('Employee', 'id');
}
}
我希望能够做到这样的事情:
Account
.forge()
.fetch({ withRelated: ['manager'] })
.then((accounts) => { ... });
得到结果:
[
{
id: 30,
username: 'someuser',
manager: {
id: 2,
email: 'some@one.com',
},
},
{
id: 31,
username: 'anotheruser',
manager: {
id: 3,
email: 'fake@employee.com',
},
},
];
如何设置模型来执行此操作?看起来它应该非常简单,但我还没有找到一个很好的例子(显示模型中引用的SQL模式表会有很多帮助)定义与联结表的关系。任何例子都将不胜感激。