2012-07-25 96 views
0

之間的多重關係我有兩個實體:產品和ProductAttachment(文件實體)Symfony2的兩個實體

的產品有一個主照片,圖片列表和文件列表。

我的想法是讓產品和ProductAttachment之間的關係樹,所以我一直在產品採取以下三種屬性:

  • $ main_photo:OneToOne
  • $圖片:一對多
  • $附件:一對多

產品附件有這樣的屬性:

  • $命名
  • $路徑
  • $文件
  • $產品:多對一
  • $類型:類型的附件(主照片,圖片,文檔)

我有一些問題,但在提出具體問題之前,我想知道這是否是一種好方法。

是否存在另一種使用文件的簡單方法? 我已經嘗試了一些上傳捆綁在knpbundles沒有運氣(他們不符合我的需要)

謝謝你提前!

回答

0

編輯:重新閱讀你的問題,關於你的關係後,你確實需要 多對一(因爲你可以有很多產品附有一個主圖像) 多對多(許多產品+多張圖片) 多對多(許多產品+許多附件)

然後,您將反轉作爲OneToMany,ManyToMany和ManyToMany。

也有可能將圖片和附件放在一個關係中,並在文件中包含類型標識符,這取決於您。

編輯完

你做到了將工作,通常當我與數據庫結構幾乎保持相同的文件工作的方式。產品附件(或文件)可能會有一些額外的字段,指示它存儲的位置(FTP,S3等),但除此之外相同。

正常情況下,當我使用文件上傳時,我使用了一個像http://www.plupload.com這樣的腳本,它實際上將圖像發佈到您選擇的頁面。它非常好,因爲它會使用HTML5,並且可以回退到其他各種上傳類型,前提是用戶可以獲得對該上傳器的支持。

當上傳發送到控制器的響應,它會發送文件,通常我有一個路由設置,讓我指定上傳目錄,所以我會指着上傳說http://site.com/upload/upload-folder1

然後你讓控制器保存文件,併發送回應文件的位置。然後使用javascript將文件位置放入隱藏的表單字段productAttachment.path(例如),這就是它。

我也嘗試了上傳包,但它們相當複雜,似乎缺乏我需要的東西。

+0

嗨,謝謝你的回覆。 第一個問題:在ProductAttachment中,我不知道要在關係的inversedBy子句中放置什麼,因爲產品中有三個屬性(main_photo,pictures,documents): @ORM \ ManyToOne(targetEntity =「Product」,inversedBy =「???」) – user1551192 2012-07-26 08:25:38

+0

重新閱讀你的問題後,我重新登錄了我的主帖以反映。 – CriticalImpact 2012-07-26 16:02:49

+0

謝謝,順便說一下,我找到了正確的方法來做到這一點。 – user1551192 2012-08-01 08:39:35