Symfony2两个实体之间的多个关系

时间:2012-07-25 10:58:05

标签: php symfony doctrine

我有两个实体:Product和ProductAttachment(文件实体)

产品包含主要照片,图片列表和文档列表。

我的想法是在Product和ProductAttachment之间建立树关系,所以我在Product中有三个属性:

  • $ main_photo:OneToOne
  • $ pictures:OneToMany
  • $ attachments:OneToMany

产品附件具有以下属性:

  • $名称
  • $路径
  • $文件
  • $ product:ManytoOne
  • $ type:附件类型(主要照片,图片,文档)

我遇到了一些问题,但在提出具体问题之前我想知道这是不是一个好方法。

是否存在另一种处理文件的简单方法? 我已经在没有运气的情况下尝试了一些上传捆绑包(它们不适合我需要的)

提前谢谢!

1 个答案:

答案 0 :(得分:0)

编辑:重新阅读你的问题后,关于你的人际关系,你真的需要 ManyToOne(因为你可以有许多附有一个主图像的产品) ManyToMany(很多产品+很多图片) ManyToMany(许多产品+许多附件)

然后你就有了OneToMany,ManyToMany和ManyToMany的反转。

也可以将图片和附件放在一个关系中,并在文件上放置一个类型标识符,这完全取决于你。

结束编辑

您完成它的方式将起作用,通常在我处理文件时,数据库结构几乎保持不变。产品附件(或文件)可能有一些额外的字段,指示它存储的位置(FTP,S3等),但除此之外。

通常,当我使用要上传的文件时,我会使用像http://www.plupload.com这样的脚本,它实际上会将图像发布到您选择的页面。这非常好,因为它会使用HTML5并且如果用户表示支持该上传器,则会回退到其他各种上传器类型。

当上传者向控制器发送响应时,它会发送文件,通常我有一个路由设置,让我指定一个上传目录,所以我指的是上传者说http://site.com/upload/upload-folder1

然后你得到控制器来保存文件,并发回一个带有文件位置的响应。然后使用javascript将文件位置放入隐藏的表单字段productAttachment.path(例如),这就是它。

我也试过上传包,但它们相当复杂,似乎缺乏我所需要的。