摘要:译者飞龙来源是多对多的关系包括连接表。每个医生可以拥有许多不同的病人。如果为,关联将会自动被获取。默认为由于历史原因。如果为,表中外键的列会形成一个组合键。允许重命名关联访问器。
hasMany译者:飞龙
来源:hasMany
是多对多的关系(包括连接表)。
例如:Patient.hasMany("doctors", Doctor, { why: String }, { reverse: "patients", key: true })。
病人可以拥有许多不同的医生。每个医生可以拥有许多不同的病人。
当你调用Patient.sync()时,会创建一个连接表patient_doctors。
列名称 | 类型 |
---|---|
patient_id | Integer |
doctor_id | Integer |
why | varchar(255) |
下列函数是可用的:
// 获取所有关联医生的列表 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"}到连接表中。
APIModel.hasMany( name, // String. 关联名称 otherModel, // Model. 要关联的模型 extraProps, // Object. 在连接表上出现的额外属性 opts // Object. 关联的选项 );选项
选项名称 | 类型 | 描述 |
---|---|---|
autoFetch | Boolean | 默认为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。允许重命名关联访问器。 |
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/17503.html
摘要:译者飞龙来源关联是一个或多个模型之间的关系。关联的类型一对多多对多一对一 译者:飞龙 来源:Defining Associations 关联是一个或多个模型之间的关系。 关联的类型: hasOne(一对多) hasMany(多对多) extendsTo(一对一)
摘要:前言是特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。需求分析使用一条查询语句就能把列表的数据全部展现出来,列表包含一对一,一对多,以及多对多的关系。不能破坏自有的表头排序功能,以及中的存值。相关资料中多表关联查询 前言 hasOne、hasMany是Yii2特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。为什么?因为这种方式关联查询出来...
摘要:前言是特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。需求分析使用一条查询语句就能把列表的数据全部展现出来,列表包含一对一,一对多,以及多对多的关系。不能破坏自有的表头排序功能,以及中的存值。相关资料中多表关联查询 前言 hasOne、hasMany是Yii2特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。为什么?因为这种方式关联查询出来...
阅读 3533·2021-11-25 09:43
阅读 3115·2021-10-08 10:04
阅读 1585·2019-08-26 12:20
阅读 2031·2019-08-26 12:09
阅读 563·2019-08-23 18:25
阅读 3548·2019-08-23 17:54
阅读 2296·2019-08-23 17:50
阅读 770·2019-08-23 14:33