2013-08-05 38 views
0

我有3個數據庫表tbl_categories,tbl_items,tbl_items_categories這樣的:如何創建誼關係,爲3個DB表

tbl_categories fields: id (category id - primary key), name (category's name) 
tbl_items fields: id (item id - primary key), name (item name) 
tbl_items_categories fields: id (primary key), item_id (id field value from tbl_items), category_id (id field value from tbl_category) 

請注意,一個項目可以在多個類別(被用於此tbl_items_categories用途)

我已經爲這些表創建了3個模型(在YII中) - 類別,項目,itemMultiCategories。

任何人都可以請讓我知道如何爲以下目的創建誼關係:

  1. 如果我有一個項目的ID,我應該能夠得到它的所有類別名稱(最好有類IDS)
  2. 如果我有類別ID,我應該得到該類別的所有項目名稱(好有項ID以及)

在此先感謝。

回答

0

您不是在Yii中創建關係,而是在數據庫中創建關係。 看看this answer。 創建關係後,進入gii(http://yourhost.com/?r=gii),然後再次創建所有模型。不要忘記檢查關係創建的複選框。

0

你在這裏有什麼是由關聯表(tbl_items_categories)橋接的多對多關係。 Yii的許多關係活動記錄應該很容易處理。

http://www.yiiframework.com/doc/guide/1.1/en/database.arr

例如,要在你的項目模式,讓你所有類別的關係,你可以做這樣的事情:

public function relations() 
{ 
    return array(
     'categories' => array(self::MANY_MANY, 'categories','tbl_items_categories(item_id, category_id)'), 
    ); 
} 

外鍵,tbl_items_categories(item_id, category_id),只是名稱您的關聯表的表格字段與您的鏈接表匹配,並放在括號中。您的字段應按順序列出,以便首先列出將鏈接到當前模型主鍵的字段。我的理解是,如果您想按類別獲取物品,那麼類別模型中關係中的外鍵將如下所示:tbl_items_categories(category_id, item_id)

了一份關於您的關聯表:

你可能會考慮刪除「id」字段,因爲ITEM_ID和CATEGORY_ID組合可能是獨一無二的。另外,由於只需在這些關係聲明中引用表,您可能不需要爲其設置單獨的模型。