Во-первых, таблица соединений должна иметь имена моделей в алфавитном порядке, чтобы 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