0

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

一个产品有一张主照片、一个图片列表和一个文档列表。

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

  • $main_photo : 一对一
  • $图片:一对多
  • $附件:一对多

产品附件具有以下属性:

  • $名称
  • $路径
  • $文件
  • $product : 多对一
  • $type : 附件类型(主照片、图片、文档)

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

是否存在另一种处理文件的简单方法?我在 knpbundles 中尝试了一些上传包,但没有运气(它们不适合我的需要)

先感谢您!

4

1 回答 1

0

编辑:重新阅读您的问题后,关于您的关系,您实际上需要 ManyToOne(因为您可以拥有许多产品并附有一张主图片) ManyToMany(许多产品+许多图片)ManyToMany(许多产品+许多附件)

然后你会得到一个 OneToMany、ManyToMany 和 ManyToMany 的逆。

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

结束编辑

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

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

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

然后让控制器保存文件,并发送回包含文件位置的响应。然后,您使用 javascript 将文件位置放入隐藏的表单字段 productAttachment.path(例如)中,仅此而已。

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

于 2012-07-25T13:21:13.400 回答