orm2 中文文档 4.2 hasMany(多对多关系)
来源:互联网 发布:mac电源适配器 编辑:程序博客网 时间:2024/05/16 00:45
译者:飞龙
来源:hasMany
hasMany
是多对多的关系(包括连接表)。
例如:Patient.hasMany('doctors', Doctor, { why: String }, { reverse: 'patients', key: true })
。
病人可以拥有许多不同的医生。每个医生可以拥有许多不同的病人。
当你调用Patient.sync()
时,会创建一个连接表patient_doctors
。
下列函数是可用的:
// 获取所有关联医生的列表patient.getDoctors(function(err, doctors) { // ...});// 向连接表中增加记录patient.addDoctors([phil, bob], function(err) { // ...});// 移除连接表中的现有记录,并增加新的patient.setDoctors([phil, nephewOfBob], function(err) { // ...});// 检查是否某个病人关联了指定的医生patient.hasDoctors([bob], function(err, patientHasBobAsADoctor) { // because that is a totally legit and descriptive variable name if (patientHasBobAsADoctor) { // ... } else { // ... }});// 从连接表中移除指定记录patient.removeDoctors([bob], function(err) { // ...});// 并且所有医生都有自己的方法来获取病人bob.getPatients(function(err, patients) { if (patients.indexOf(you) !== -1) { // woot! } else { // ... }});// 以及其他
要把医生关联到病人:
patient.addDoctor(surgeon, {why: 'remove appendix'}, function(err) { // ...});// or...surgeon.addPatient(patient, {why: 'remove appendix'}, function(err) { // ...});
这样会添加{patient_id: 4, doctor_id: 6, why: "remove appendix"}
到连接表中。
API
Model.hasMany( name, // String. 关联名称 otherModel, // Model. 要关联的模型 extraProps, // Object. 在连接表上出现的额外属性 opts // Object. 关联的选项);
选项
false
。如果为true
,关联将会自动被获取。 autoFetchLimit Number 默认为1
。自动获取的深度。 key Boolean 默认为false
(由于历史原因)。如果为true
,表中外键的列会形成一个组合键。 mergeTable String 连接表的自定义名称 mergeId String 代表当前模型那一列的自定义名称 mergeAssocId String 代表另一个模型那一列的自定义名称 reverse String 默认为false
。如果为true
,关联可以通过另一个模型使用指定方法获取到。 getAccessor String 默认为'get' + Name
。允许重命名关联访问器。 setAccessor String 默认为'set' + Name
。允许重命名关联访问器。 hasAccessor String 默认为'has' + Name
。允许重命名关联访问器。 delAccessor String 默认为'del' + Name
。允许重命名关联访问器。 addAccessor String 默认为'add' + Name
。允许重命名关联访问器。 0 0
- orm2 中文文档 4.2 hasMany(多对多关系)
- orm2 中文文档 4.1 hasOne(多对一关系)
- orm2 中文文档 4.3 extendsTo(一对一关系)
- orm2 中文文档
- grails 设置一对多(hasMany belongsTo)级联关系
- orm2 中文文档 2. 设置
- orm2 中文文档 8. 聚合
- 关于yii2 ActiveDataProvider 遇到 hasMany 和多对多关系时的处理技巧
- orm2 中文文档 1. 连接到数据库
- orm2 中文文档 3. 定义模型
- orm2 中文文档 3.1 模型属性
- orm2 中文文档 3.2 模型验证器
- orm2 中文文档 3.3 模型钩子
- orm2 中文文档 4. 定义关联
- orm2 中文文档 6. 查找记录
- orm2 中文文档 5. 同步和删除模型
- orm2 中文文档 7. 创建和更新记录
- grails hasMany一对多HQL查询问题
- html标签meta的用法
- JavaMail学习四 JavaMailAPI
- LNMP架构搭建(Linux+Nginx+MySQL+PHP)
- ORACLE--EXISTS
- 烤氏历史第8集:《世通兴衰录:被遗忘的帝国》-3.帝国盛世
- orm2 中文文档 4.2 hasMany(多对多关系)
- python 进度条 tqdm
- 分级基金下折套利风险介绍
- 烤氏历史第9集:《世通兴衰录:被遗忘的帝国》-4.大江东流
- toolbar 基本用法(Android studio中测试)
- LoadRunner性能测试学习方法
- Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠
- Spark 常用api介绍
- 在多线程程序中指定线程来处理信号