2013-07-30 107 views
2

在我們的cms中,我們有一個用於跟蹤所有對象的表格。它接受來自不同對象(圖像,視頻,帖子,文章等)的記錄ID,並將它們映射到它們的對象類型。Coldfusion ORM一對一多條件關係

我們正在將很多系統升級爲使用ORM,因此我需要現在將關係從對象映射到對象記錄。 (例如,在下面我需要一個對象的屬性映射到圖像成分)

Object: 
ID, 
recordID, 
classID 

image: 
ID, 
... 

所以

object.recordID = image.ID where classID = 'image' 

我不知道該如何設置一個一對一的關係了,因爲它是不是主鍵的主鍵。而且它也不是一個獨特的外鍵協會,因爲它具有多列唯一性約束。

這不是coldfusion現在可以處理的東西嗎?

+0

我認爲「鑑別」可能是使用什麼這個,看http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS027D3772-2E98-4d5b-8800- 054A62EBF8D9.html –

+0

我玩過這個遊戲,並設法使用鑑別器將對象類擴展爲imageObject。但是這會混淆所有對象之間的關係,因爲它們仍然使用不需要鑑別器的主ID連接到主對象,因此,在鑑別器丟失的情況下,關係會痛苦地哭泣......如果這樣做任何意義。 – Rumpleteaser

回答

0

爲了避免使用的主要對象ID爲關鍵,儘量Image對象連接到你使用的mappedBy屬性在Image.cfc雙向關係添加如下ImageObject子類:

Object.cfc(家長)

<cfcomponent name="Object" persistent="true" accessors="true" table="objects" discriminatorColumn="classID"> 

    <cfproperty name="id" fieldtype="id" generator="identity" column="ID"> 

</cfcomponent> 

ImageObject.cfc(兒童)

<cfcomponent name="ImageObject" persistent="true" accessors="true" extends="Object" table="objects" discriminatorValue="image"> 
    <!--- Connect to the image using the foreign key ---> 
    <cfproperty name="image" fieldtype="one-to-one" cfc="Image" fkcolumn="recordID"> 

</cfcomponent> 

Image.cfc

<cfcomponent name="Image" persistent="true" accessors="true" table="images"> 

    <cfproperty name="id" fieldtype="id" generator="identity" column="ID"> 
    <!--- Connect to the ImageObject using the relationship already defined in ImageObject---> 
    <cfproperty name="objectRecord" fieldtype="one-to-one" cfc="ImageObject" mappedby="image"> 

</cfcomponent>