2010-08-17 65 views
2

首先,我想只是在那裏,我是一個ORM noob。我從來沒有在我的生活中使用過ORM,並且在我的日常開發中達到了一個要點,我需要做一些瘋狂的高級關係,因爲我使用Codeigniter時,我相信Datamapper Overzealous Edition可以幫助我。Datamapper(Overzealous Edition),Codeigniter和有很多說明

在我的數據庫中,我有以下表格;

用戶
項目
客戶
任務

這裏是表之間我想要的關係;

  • 用戶可以屬於許多項目。
  • 一個項目可以有多個任務,但只能有一個客戶端。
  • 客戶可以有很多的用戶,可以有很多項目
  • 任務只能有一個項目

我試圖建立我的模型到模型目錄,因爲它在文檔中表示,模型名稱沒有結束,所以對於用戶我有一個user.php模型等等。

我知道文檔很棒,但我似乎無法正確理解它,即使它顯然非常簡單。我知道你通過例如$ u = new User()來實例化模型。在你的控制器內部,但我的問題是設置模型內部的關係。

如何讓我的模型具有上述關係,例如,當我獲取任務時,我可以看到它屬於哪個項目以及來自其關聯數據庫表的一整堆信息。

我注意到,在文檔中,您可以在項目模型中使用以下內容,它應該告訴它它可以爲一個項目提供多個任務; var $has_many = array('task')

難道這就是它的全部嗎?它與定義$ has_many和$ has_one變量並將相關的模型名稱放入數組一樣簡單嗎?

回答

1

我從來沒有使用過這個特殊的ORM,但我確實使用了Doctrine。如果你使用的那個工作方式非常相似,那麼你的問題的簡單答案是 - 是的!在Doctrine中,你建立了模型類中的所有關係。然後ORM將爲您管理所有內容。所以,例如,如果你實例化一個新的任務對象... $ task = new Task(); 然後你可以通過簡單地寫 $ task-> Project來訪問與Project表的關係:$ task-> Project;

我必須強調,上面的代碼不是爲datamapper編寫的,因此可能無法正常工作,但我希望它能爲您清除一些事情。這聽起來像你理解文檔,但不相信它!

+0

儘管它們都是不同的ORM,但我認爲它們在如何訪問表格和檢索相關字段數據方面共享相似的語法。我想所有的ORM都遵循相同的方法將數據庫錶轉換爲對象,無論使用哪種ORM,底層方法都是一樣的。 其他人蔘考的Datamapper是用Ruby編寫的,但是我正在使用它的PHP實現。感謝您的幫助,我只需要保證並意識到我理解文檔。 – 2010-08-17 23:48:27

0

只要您的數據庫結構符合Datamapper Overzealous預期的佈局,您就可以做到這一切。

我一直在使用這個ORM的項目,我一直在建設和大部分,這是非常有用的和節省時間。