如何查询引用/查找数据以及在模型之间构建以支持它们的正确关系是什么?
示例:
地址模型有一个字段,表示地址所在的城市。城市模型具有预先填充的城市列表。我想在两个模型之间建立一个环回关系,这样我可以在添加新地址时引用一个城市,并在查询地址时将城市作为地址的一部分返回。
在关系数据库中,你可以有一个外键,让我们说CityId填充了对城市的引用。然后,您可以查询地址表并在城市表中包含一个联接,以返回与该地址相关的城市。
在环回中,我有以下模型(示例中为简化):
地址模型
{
"name": "Address",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"addressLineOne": {
"type": "string",
"required": true
},
},
"validations": [],
"relations": {
"city": {
"type": "hasOne",
"model": "city",
"foreignKey": "cityId"
}
},
"acls": [],
"methods": {}
}
城市模型
{
"name": "City",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"cityName": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
答案 0 :(得分:1)
对于从hasOne到belongsTo的地址模型更改关系:
...
"relations": {
"city": {
"type": "belongsTo",
"model": "City",
"foreignKey": "cityId"
}
}
...
BelongsTo关系将外键添加到Address模型。所以每个地址都有一个cityId。
对于City模型,您可以添加如下关系:
"relations": {
"addresses": {
"type": "hasMany",
"model": "Address",
"foreignKey": "cityId"
}
}
现在,您将能够获得任何城市的所有地址。
P.S。我很确定在配置关系时,您需要为模型使用确切的模型名称:" model":" City"或"模型":"地址",就像你在模型描述中设置它一样:
{
"name": "Address",
"base": "PersistedModel",
"idInjection": true,
...