HABTM连接具有HABTM关系的表

时间:2010-11-30 13:26:55

标签: cakephp models relationship has-and-belongs-to-many

如果我在HTBTM关系中有以下数据库表名:

**dressess**
id

**dressess_categories**
id
dress_id
category_id

**categories**
id

如何在 dressess_categories 表中为HABTM关系创建数据库表名称,例如:

**dressess_categories**
id

**colors_dress_categories**   <--- It is named right?
id
dress_category_id   <--- It is named right?
color_id

**colors**
id

提前致谢。

1 个答案:

答案 0 :(得分:1)

首先,连接表需要按字母顺序排列模型名称,以便CakePHP自动识别它们:

dresses_categories /* incorrect */
categories_dresses /* correct */

现在针对手头的问题:如果我正确理解了您的问题,您是否尝试在Color模型和用于不同HABTM关系的连接表之间创建HABTM关联?这是不可能的。 (或者如果是的话,它将是一个蛋糕 - 黑客 - 一个)。

首先,停止考虑数据库表之间关系的关系。在CakePHP模型之间定义关系,并且表驱动它们。为完成这项任务,您需要做的是制作四个模型:

Dress
Category
DressCategory
Color

定义如此的关系:

Dress         -> hasMany   -> DressCategory
Category      -> hasMany   -> DressCategory
DressCategory -> belongsTo -> Category, Dress
DressCategory -> HABTM     -> Color
Color         -> HABTM     -> DressCategory

带有适当外键的五个表:

dresses
-------
id

categories
----------
id

dress_categories
----------------
id
dress_id
category_id

colors
------
id

colors_dress_categories
-----------------------
id
color_id
dress_category_id