摘要:譯者飛龍來源是多對多的關(guān)系包括連接表。每個醫(yī)生可以擁有許多不同的病人。如果為,關(guān)聯(lián)將會自動被獲取。默認(rèn)為由于歷史原因。如果為,表中外鍵的列會形成一個組合鍵。允許重命名關(guān)聯(lián)訪問器。
hasMany譯者:飛龍
來源:hasMany
是多對多的關(guān)系(包括連接表)。
例如:Patient.hasMany("doctors", Doctor, { why: String }, { reverse: "patients", key: true })。
病人可以擁有許多不同的醫(yī)生。每個醫(yī)生可以擁有許多不同的病人。
當(dāng)你調(diào)用Patient.sync()時,會創(chuàng)建一個連接表patient_doctors。
列名稱 | 類型 |
---|---|
patient_id | Integer |
doctor_id | Integer |
why | varchar(255) |
下列函數(shù)是可用的:
// 獲取所有關(guān)聯(lián)醫(yī)生的列表 patient.getDoctors(function(err, doctors) { // ... }); // 向連接表中增加記錄 patient.addDoctors([phil, bob], function(err) { // ... }); // 移除連接表中的現(xiàn)有記錄,并增加新的 patient.setDoctors([phil, nephewOfBob], function(err) { // ... }); // 檢查是否某個病人關(guān)聯(lián)了指定的醫(yī)生 patient.hasDoctors([bob], function(err, patientHasBobAsADoctor) { // because that is a totally legit and descriptive variable name if (patientHasBobAsADoctor) { // ... } else { // ... } }); // 從連接表中移除指定記錄 patient.removeDoctors([bob], function(err) { // ... }); // 并且所有醫(yī)生都有自己的方法來獲取病人 bob.getPatients(function(err, patients) { if (patients.indexOf(you) !== -1) { // woot! } else { // ... } }); // 以及其他
要把醫(yī)生關(guān)聯(lián)到病人:
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. 關(guān)聯(lián)名稱 otherModel, // Model. 要關(guān)聯(lián)的模型 extraProps, // Object. 在連接表上出現(xiàn)的額外屬性 opts // Object. 關(guān)聯(lián)的選項 );選項
選項名稱 | 類型 | 描述 |
---|---|---|
autoFetch | Boolean | 默認(rèn)為false。如果為true,關(guān)聯(lián)將會自動被獲取。 |
autoFetchLimit | Number | 默認(rèn)為1。自動獲取的深度。 |
key | Boolean | 默認(rèn)為false(由于歷史原因)。如果為true,表中外鍵的列會形成一個組合鍵。 |
mergeTable | String | 連接表的自定義名稱 |
mergeId | String | 代表當(dāng)前模型那一列的自定義名稱 |
mergeAssocId | String | 代表另一個模型那一列的自定義名稱 |
reverse | String | 默認(rèn)為false。如果為true,關(guān)聯(lián)可以通過另一個模型使用指定方法獲取到。 |
getAccessor | String | 默認(rèn)為"get" + Name。允許重命名關(guān)聯(lián)訪問器。 |
setAccessor | String | 默認(rèn)為"set" + Name。允許重命名關(guān)聯(lián)訪問器。 |
hasAccessor | String | 默認(rèn)為"has" + Name。允許重命名關(guān)聯(lián)訪問器。 |
delAccessor | String | 默認(rèn)為"del" + Name。允許重命名關(guān)聯(lián)訪問器。 |
addAccessor | String | 默認(rèn)為"add" + Name。允許重命名關(guān)聯(lián)訪問器。 |
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17503.html
摘要:譯者飛龍來源關(guān)聯(lián)是一個或多個模型之間的關(guān)系。關(guān)聯(lián)的類型一對多多對多一對一 譯者:飛龍 來源:Defining Associations 關(guān)聯(lián)是一個或多個模型之間的關(guān)系。 關(guān)聯(lián)的類型: hasOne(一對多) hasMany(多對多) extendsTo(一對一)
摘要:前言是特有的用于多表關(guān)聯(lián)查詢的函數(shù),平時在使用多表關(guān)聯(lián)查詢的時候建議使用它們。需求分析使用一條查詢語句就能把列表的數(shù)據(jù)全部展現(xiàn)出來,列表包含一對一,一對多,以及多對多的關(guān)系。不能破壞自有的表頭排序功能,以及中的存值。相關(guān)資料中多表關(guān)聯(lián)查詢 前言 hasOne、hasMany是Yii2特有的用于多表關(guān)聯(lián)查詢的函數(shù),平時在使用多表關(guān)聯(lián)查詢的時候建議使用它們。為什么?因為這種方式關(guān)聯(lián)查詢出來...
摘要:前言是特有的用于多表關(guān)聯(lián)查詢的函數(shù),平時在使用多表關(guān)聯(lián)查詢的時候建議使用它們。需求分析使用一條查詢語句就能把列表的數(shù)據(jù)全部展現(xiàn)出來,列表包含一對一,一對多,以及多對多的關(guān)系。不能破壞自有的表頭排序功能,以及中的存值。相關(guān)資料中多表關(guān)聯(lián)查詢 前言 hasOne、hasMany是Yii2特有的用于多表關(guān)聯(lián)查詢的函數(shù),平時在使用多表關(guān)聯(lián)查詢的時候建議使用它們。為什么?因為這種方式關(guān)聯(lián)查詢出來...
閱讀 3554·2021-11-25 09:43
閱讀 3135·2021-10-08 10:04
閱讀 1625·2019-08-26 12:20
閱讀 2053·2019-08-26 12:09
閱讀 595·2019-08-23 18:25
閱讀 3573·2019-08-23 17:54
閱讀 2322·2019-08-23 17:50
閱讀 803·2019-08-23 14:33