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 相關聯。

帖子有並且屬於話題 (多對多) ,這是 poststopics 表之間的多對多關係。對於維護多對多關係必須要建立第三個表,表,表名應該是 posts_categories。該表的欄位如下所述

  1. id(表的主鍵)
  2. post_id(posts 表的外來鍵)
  3. topic_id(topics 表的外來鍵)