2011-02-28 52 views
1

下面是我的團隊堅持使用的用例: 系統中有不同類型的對象(例如:用戶,照片,鏈接,視頻,標籤,照片標籤等)。現在每個對象都有自己的表格。當查找對象爲任何目的(說活飼料,活動跟蹤,標註不同的對象類型等),理想情況下,系統需要知道三兩件事:
1)對象ID
2)對象類型
3)對象對象的細節取決於用例在MySQL/Codeignitor中動態引用表?

對於1 & 2,我通過添加兩列來處理它:object_id,object_type - 這將始終告訴我ID和Id所指的對象。但是對於第3步,問題是獲取對象細節,我需要知道每個對象與哪些表相關。那我該怎麼做?我正在使用MySQL和codeignitor php。

我可以想到的一種方法是有一個表,在對象和模式表之間有一個關係。但缺點是,我必須總是加入這個來獲取表名,然後查找該表。我希望跳過任何加入。有沒有什麼可以在codeignitor內爲這個或任何應用程序邏輯添加,可以根據對象類型動態地檢測哪個表引用?也許我甚至不需要object_Type列,系統可以從object_id和page_id或其他東西上自行找到表?

謝謝。

回答

1

您正在談論的是Rails目前支持的[polymorphic associations][1]。我不認爲Codeigniter支持這個by default(使用另一個圖層[ORM])。然而,我能想到的唯一的事情就是有一個庫處理這個,但這都將是條件語句(ifs)。