CakePHP 中的模型關聯
我們可以在 CakePHP 中定義 4 種型別的關聯(關係)
class PostsTable extends Table {
public function initialize(array $config) {
// table initialization code should be here
$this->belongsTo('Authors', [
'className' => 'Authors',
'foreignKey' => 'author_id',
'joinType' => 'INNER',
]);
$this->hasMany('Tags');
$this->hasOne('Categories');
$this->hasAndBelongsToMany('Topics');
}
}
在上面的示例中,你可以看到 4 種型別的關係
帖子屬於作者 (一對一) ,它意味著在 posts
表中有一個與 authors
表的 id
相關的外來鍵 author_id
。
帖子有很多標籤 (一對多) ,它意味著在 tags
表中有一個與 posts
表的 id
相關的外來鍵 post_id
。
帖子有一個標籤 (多對一或一對一) ,它意味著在 posts
表中有一個外來鍵 category_id
,它與 id
表的 id
相關聯。
帖子有並且屬於話題 (多對多) ,這是 posts
和 topics
表之間的多對多關係。對於維護多對多關係必須要建立第三個表,表,表名應該是 posts_categories
。該表的欄位如下所述
- id(表的主鍵)
- post_id(
posts
表的外來鍵) - topic_id(
topics
表的外來鍵)