多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 关系行为类型 ### [](https://octobercms.com/docs/backend/relations#relationship-types)关系类型 关系管理器的显示方式取决于目标模型中的关系定义。关系类型还将确定配置要求,这些要求以**粗体显示**。可以使用以下关系类型: * [有很多](https://octobercms.com/docs/backend/relations#has-many) * [属于许多](https://octobercms.com/docs/backend/relations#belongs-to-many) * [属于许多(带有数据透视数据)](https://octobercms.com/docs/backend/relations#belongs-to-many-pivot) * [属于](https://octobercms.com/docs/backend/relations#belongs-to) * [有一个](https://octobercms.com/docs/backend/relations#has-one) ### [](https://octobercms.com/docs/backend/relations#has-many)有很多 1. 相关记录显示为列表(**view.list**)。 2. 单击一条记录将显示一个更新表单(**manage.form**)。 3. 单击*添加*将显示一个选择列表(**manage.list**)。 4. 单击*创建*将显示一个创建表单(**manage.form**)。 5. 单击*删除*将销毁记录。 6. 单击*删除*将孤立该关系。 例如,如果*博客帖子中*有很多*评论*,则将目标模型设置为博客帖子,并使用**列表**定义中的列显示评论**列表**。单击评论将打开一个弹出表单,其中包含在**表单中**定义的字段以更新评论。注释可以用相同的方式创建。下面是关系行为配置文件的示例: ~~~ # =================================== # Relation Behavior Config # =================================== comments: label: Comment manage: form: $/acme/blog/models/comment/fields.yaml list: $/acme/blog/models/comment/columns.yaml view: list: $/acme/blog/models/comment/columns.yaml toolbarButtons: create|delete ~~~ ### [](https://octobercms.com/docs/backend/relations#belongs-to-many)属于许多 1. 相关记录显示为列表(**view.list**)。 2. 单击*添加*将显示一个选择列表(**manage.list**)。 3. 单击*创建*将显示一个创建表单(**manage.form**)。 4. 单击*删除*将销毁数据透视表记录。 5. 单击*删除*将孤立该关系。 例如,如果*用户*属于多个*角色*,则将目标模型设置为用户,并使用**列表**定义中的列显示角色**列表**。可以添加现有角色,也可以从用户中删除现有角色。下面是关系行为配置文件的示例: ~~~ # =================================== # Relation Behavior Config # =================================== roles: label: Role view: list: $/acme/user/models/role/columns.yaml toolbarButtons: add|remove manage: list: $/acme/user/models/role/columns.yaml form: $/acme/user/models/role/fields.yaml ~~~ ### [](https://octobercms.com/docs/backend/relations#belongs-to-many-pivot)属于许多(带有数据透视数据) > **注意:**[延迟绑定](https://octobercms.com/docs/database/relations#deferred-binding)目前不支持数据透视表数据,因此父模型应该存在。如果您的关系行为配置具有`deferredBinding: true`,则枢轴数据将**无法**在列表配置(例如`pivot[attribute]`)中使用。 1. 相关记录显示为列表(**view.list**)。 2. 单击一条记录将显示一个更新表单(**ivot.form**)。 3. 单击“*添加”*将显示一个选择列表(**manage.list**),然后显示一个数据输入表单(**ivot.form**)。 4. 单击*删除*将销毁数据透视表记录。 继续“*属于许多*关系”中的示例,如果一个角色也带有一个到期日期,则单击一个角色将打开一个弹出式窗体,该窗体具有在**透视图中**定义的字段以更新到期日期。下面是关系行为配置文件的示例: ~~~ # =================================== # Relation Behavior Config # =================================== roles: label: Role view: list: $/acme/user/models/role/columns.yaml manage: list: $/acme/user/models/role/columns.yaml pivot: form: $/acme/user/models/role/fields.yaml ~~~ 通过`pivot`关系定义表单字段和列表列时,数据透视表可用,请参见以下示例: ~~~ # =================================== # Relation Behavior Config # =================================== teams: label: Team view: list: columns: name: label: Name pivot[team_color]: label: Team color manage: list: columns: name: label: Name pivot: form: fields: pivot[team_color]: label: Team color ~~~ ### [](https://octobercms.com/docs/backend/relations#belongs-to)属于 1. 相关记录显示为预览表单(**view.form**)。 2. 单击*创建*将显示一个创建表单(**manage.form**)。 3. 单击*更新*将显示一个更新表单(**manage.form**)。 4. 单击*链接*将显示一个选择列表(**manage.list**)。 5. 单击*取消链接*将孤立该关系。 6. 单击*删除*将销毁记录。 例如,如果*电话*属于某*个人,*则关系管理器将显示一个表单,其中包含在**form中**定义的字段。单击“链接”按钮将显示要与手机关联的人员列表。单击“取消链接”按钮将使电话与个人解除关联。 ~~~ # =================================== # Relation Behavior Config # =================================== person: label: Person view: form: $/acme/user/models/person/fields.yaml toolbarButtons: link|unlink manage: form: $/acme/user/models/person/fields.yaml list: $/acme/user/models/person/columns.yaml ~~~ ### [](https://octobercms.com/docs/backend/relations#has-one)有一个 1. 相关记录显示为预览表单(**view.form**)。 2. 单击*创建*将显示一个创建表单(**manage.form**)。 3. 单击*更新*将显示一个更新表单(**manage.form**)。 4. 单击*链接*将显示一个选择列表(**manage.list**)。 5. 单击*取消链接*将孤立该关系。 6. 单击*删除*将销毁记录。 例如,如果一个*人*具有一个*电话*的关系经理将显示在定义的字段形式**形式**的电话。单击“更新”按钮时,将显示一个弹出窗口,其中的字段现在可编辑。如果此人已经有电话,则字段将更新,否则将为他们创建一个新电话。 ~~~ # =================================== # Relation Behavior Config # =================================== phone: label: Phone view: form: $/acme/user/models/phone/fields.yaml toolbarButtons: update|delete manage: form: $/acme/user/models/phone/fields.yaml list: $/acme/user/models/phone/columns.yaml ~~~