2011-06-29 51 views
0

我會盡力解釋我的問題。不久,我有地址表,房間表,建築物表格和用戶表格。地址表應當能夠通過其ID來確定房間,建築物和用戶的地址。由於我不能使用直接關聯映射,所以我需要一個繼承映射。讓我清楚地說明我不擅長遺傳映射問題。我的解決方案是創建一個Alias表,它可以保持房間,建築物和用戶(以及他們的類名)和地址表的ID可以直接與此Alias表交互。因此,在SQL風格中,這將是加入Alias,然後用戶加入地址表中查找用戶的地址。但是,我無法決定哪種貼圖風格適合。你能給我一些建議嗎?給我一個簡單的解釋,爲什麼它是這樣的? 謝謝。學說2繼承映射策略需要的建議

回答

0

我建議你使用像
我想這種結構關係(用戶可以根據自己的地址,建設有地址,房間有建築物)

 
users 
address 
    buildings 
    rooms 

和代碼它

/** 
* @orm:Table(name="rooms") 
* @orm:Entity 
*/ 
class Room { 
    .... 
    /** 
    * @orm:InheritanceType("JOINED") 
    * @orm:OneToOne(targetEntity="Building") 
    * @orm:JoinColumn(name="bid", referencedColumnName="id", onDelete="CASCADE", nullable=false) 
    */ 
    private $building; 
    .... 
} 

/** 
* @orm:Table(name="Buildings") 
* @orm:Entity 
*/ 
class Building { 
    .... 
    /** 
    * @orm:InheritanceType("JOINED") 
    * @orm:OneToOne(targetEntity="Address") 
    * @orm:JoinColumn(name="aid", referencedColumnName="id", onDelete="CASCADE", nullable=false) 
    */ 
    private $address; 
    .... 
} 

/** 
* @orm:Table(name="rooms") 
* @orm:Entity 
*/ 
class Address { 
    .... 
    /** 
    * @orm:InheritanceType("JOINED") 
    * @orm:OneToOne(targetEntity="User") 
    * @orm:JoinColumn(name="uid", referencedColumnName="id", onDelete="CASCADE", nullable=false) 
    */ 
    private $user; 
    .... 
} 

/** 
* @orm:Table(name="users") 
* @orm:Entity 
*/ 
class User { 
.... 
} 

@orm:在symfony中使用教義時的需求

+0

謝謝,但是在這個結構中沒有繼承,它是一對一的連接tructure。我想我已經找到了適合我的需求的類表繼承,因爲我需要Discriminator Columns。每當我完成編碼,我會在這裏發佈代碼。 – ufucuk