3: 关系

CMS 模型三种关系类型,均作为字段声明,并且都自动从模式中派生。

类型 意义 示例
parent 属于一个 一篇文章有一个作者
child 有多个 一个作者有多篇文章
many 多对多 一篇文章有多个主题

3.1: 父母和孩子

parent 字段存储相关行的 ID,并在读取时解析为相关模型:

// on article
author:   field (type: 'parent', obj: 'author',   title: 'Author', required: true)
category: field (type: 'parent', obj: 'category', title: 'Category')
// on author, the reverse side
articles: field (type: 'child', obj: 'article', title: 'Articles')

列的约定很重要。 外键列的名称应以相关模型的简短名称命名,而不是 <name>_id。因此,文章的作者存储在名为 author 的列中,作者的 child 查找为 articles.author。将父字段命名为匹配:author,而不是 author_id

3.2: 多对多

一个 many 字段使用连接表:

topics: field (type: 'many', obj: 'topic', table: 'article_topic', title: 'Topics')

连接表的列默认为两个短名称:article_topic(article, topic)。默认情况下,相关行显示为只读;标记字段 create/change 以渲染复选框选择器,以便在创建和编辑表单上可以编辑该集合。

3.3: 读取关系

一旦声明,关系就是普通的属性读取:$article->author 是作者模型,$article->author->name 是作者的名字,子计数(12 Comments)会自动出现在列表视图中。您的应用代码中不需要任何连接 SQL。

我们使用必要的cookie来使该网站正常工作。在您的许可下,我们还使用分析工具来改善网站。