Таблица соединения HABTM с отношением HABTM - PullRequest
1 голос
/ 30 ноября 2010

Если у меня есть следующие имена таблиц базы данных в отношении HTBTM:

**dressess**
id

**dressess_categories**
id
dress_id
category_id

**categories**
id

Как мне создать имена таблиц базы данных для отношения HABTM, нужного в таблице dressess_categories , например:

**dressess_categories**
id

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

**colors**
id

Заранее спасибо.

1 Ответ

1 голос
/ 30 ноября 2010

Во-первых, таблица соединений должна иметь имена моделей в алфавитном порядке, чтобы CakePHP распознал их автоматически:

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

Теперь о проблеме: если я правильно понимаю ваш вопрос, вы пытаетесь создать связь HABTM между моделью Color и таблицей соединений, которая используется для другого отношения 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
...