3: Relations

The CMS models three relation types, all declared as fields and all derived automatically from the schema.

Type Meaning Example
parent belongs-to-one an article has one author
child has-many an author has many articles
many many-to-many an article has many topics

3.1: Parent and child

A parent field stores the related row's id and resolves to the related model when you read it:

// 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')

The column convention matters. The foreign-key column is named after the related model's short name, not <name>_id. So an article's author is stored in a column called author, and the author's child lookup reads articles.author. Name the parent field to match: author, not author_id.

3.2: Many-to-many

A many field uses a join table:

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

The join table's columns default to the two short names: article_topic(article, topic). The CMS shows the related rows read-only in the list and record views and edits the set on the record page.

3.3: Reading relations

Once declared, relations are plain property reads: $article->author is the author model, $article->author->name its name, and child counts (12 Comments) appear automatically in list views. No join SQL in your app code.

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