2012-03-30 63 views
0

我使用DataMapper建立了模型中的關係,但是我碰到了一堵牆。Codeigniter Datamapper多對多關係

我有一個RealEstate類,Client類和Position類,它們都有多對多的關係。

  1. Client可以在一個RealEstate
  2. ClientPosition「買方可以在另一個RealEstate

Position「賣方」因此,對於給定的RealEstate可以很容易地找到所有Clients但是我怎麼能包括那些客戶對於特定的RealEstate有什麼Position

回答

1

我認爲你有一個不正確的設計。它確實應該是ClientPosition之間的多對多關係,但PositionRealEstate之間只有一對多關係,一個RealEstate一側。它有效地模擬了RealEstateClient之間的多對多關係,其中包含其他信息(Position)。

在問題領域來說的,任何角色(Position)是連接具體RealEstate,但任何Client可以有作用的任意數目和任何RealEstate可以(?)都連接到它的多個角色。

我沒有CodeIgniter 2的指尖,所以不能提供代碼示例,但是讓我知道你是否真的需要它 - 我有CodeIgniter 2在家中。

+0

所以我有一個RealEstate類,一個Position類和一個Client類。 RealEstate有幾個職位附屬於它(你可以將這些職位視爲團體,這些職位包含客戶,例如,在RealEstate APPARTMENT1中,客戶John Doe處於職位所有者身份,但他可以在另一個職位上擔任另一個RealEstate ! 在我的數據庫中,我有 - RealEstates - 客戶 - 位置 - Clients_Positions(多對多) - Positions_RealEstates(一對多) 我怎樣才能得到所有在給定有一個位置,客戶端RealEstate。是否應該有一個Clients_RealEstates表? – Simon 2012-03-30 21:09:58

+0

我不這麼認爲。原始查詢類似'select * from clients c join clients_positions cp其中cp.estate_id = $ estate_id'。我不熟悉CI DataMapper lib,因此不能幫助將此查詢轉換爲DataMapper代碼,對不起。 :) – J0HN 2012-04-01 11:21:34

+0

嗨@ J0HN,我設法解決它自己。因此,我規範了客戶與合同,財產與合同,職位與合同之間的一對多關係的多對多關係。合同表和模型具有所有其他對象的ID /外鍵,並知道哪一個被連接。感謝您的輸入! – Simon 2012-04-01 14:04:30