2012-07-25 97 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