2010-11-30 8 views
1

Wenn ich die folgenden Datenbanktabellennamen in einer HTBTM relantionship:HABTM Join-Tabelle mit einem HABTM Beziehung

**dressess** 
id 

**dressess_categories** 
id 
dress_id 
category_id 

**categories** 
id 

Wie muss ich die Datenbanktabellennamen für eine HABTM Beziehung es in dressess_categories erstellen müssen Tabelle, zum Beispiel:

**dressess_categories** 
id 

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

**colors** 
id 

Vielen Dank im Voraus.

Antwort

1

Zuerst muss die Join-Tabelle, die Modellnamen in alphabetischer Reihenfolge haben, für CakePHP sie automatisch zu erkennen:

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

Jetzt für das Problem auf der Hand: Wenn ich Ihre Frage richtig verstanden hat, sind Sie versuchen, Erstellen Sie eine HABTM-Zuordnung zwischen einem -Modell und der Join-Tabelle, die für eine andere HABTM-Beziehung verwendet wird? Das ist nicht möglich. (oder wenn es so ist, wird es ein Kuchen-Hack-a-Thon sein).

Denken Sie zuerst an Beziehungen, die sich auf Datenbanktabellen beziehen. Beziehungen werden zwischen CakePHP-Modellen definiert und die Tabellen steuern sie. Was Sie brauchen, um zu tun, um diese Aufgabe zu erfüllen ist vier Modelle machen:

Dress 
Category 
DressCategory 
Color 

Beziehungen definieren wie folgt:

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

Und fünf Tabellen mit den entsprechenden Fremdschlüssel:

dresses 
------- 
id 

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

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

colors 
------ 
id 

colors_dress_categories 
----------------------- 
id 
color_id 
dress_category_id 
+0

Danke Stephen. Ich weiß, dass ich nah war. – josoroma

+0

Kein Problem! Froh, dass ich helfen konnte. – Stephen