我正在使用PHP和MySQL(通过框架Symfony 2)创建一个网站,以显示我的收藏品的一些自行车。我想为一辆自行车存储尽可能多的图像。
所以我认为这样做的一个好方法是让我的自行车实体和图片实体并将Bike实体与Picture实体链接起来一对多关系。
因此,Picture实体看起来像这样:
id bike_id title path
这是最好的方法吗?非常感谢您的建议。
编辑:关于存储缩略图..
我们还要存储缩略图版本吗?由于我将在一个页面中显示许多图片,因此我读到,使用宽度和高度缩小图片是一种不好的做法,最好存储缩小版本的图片。
所以Picture实体更像是这样吗? :
id bike_id title path path_thumbnail
再次感谢
答案 0 :(得分:1)
是的,尽管你可以
通过废弃path
并将图像存储为{id}.jpg
来简化命名图像并避免命名冲突。
更新 - 从您的编辑中,我想您错过了我所说的命名图片的重点。我建议你不要存储任何图片或缩略图网址。相反,只需要一个看起来像这样的表:
Id BikeId Title
277 123 "Cool picture"
然后根据Id
命名所有图像和缩略图文件。在上面的示例中,“酷图片”文件可以称为 /img/277.jpg 和 /img/277-thumb.jpg 。
这样您就不必在数据库中存储大量文件名,并且文件名冲突也不会有任何问题。
答案 1 :(得分:1)
您需要One to many
实体和图片之间的关系
Picture.php
/**
* @ORM\ManyToOne(targetEntity="Bike", inversedBy="images")
* @ORM\JoinColumn(name="bike_id", referencedColumnName="id")
*/
protected $Bike;
然后,每张图片可以有一行,您可以像上传单张图片一样使用symfony image上传