我有CakePHP应用程序,我想在其中附加图库到多个资源。假设我有艺术家,每个人都有自己的画廊。我有文章,每篇文章都附有一些图片等等。现在我设置这样的表:
artistimages
表中的字段是:id, artist_id, filename, filetype, filesize
等。articleimages
表格中的字段是:id, article_id, filename, filetype, filesize
等。......但我认为这不应该是这样的。
是否有可能有一个名为uploads
的表,它将包含所有带有外键的图像,指向资源对其的影响?如何告诉CakePHP哪个图像来自哪个资源?
答案 0 :(得分:0)
如果这是我,我会有images
表,然后我会将艺术家和文章hasAndBelongsToMany
添加到图像中。
然后你的HABTM会有两个连接表artists_images
和articles_images
,然后运气好的话,Cake会在这些连接表中写入每个连接表之间的关系。因此,您最终应该得到与正确图像相关的正确内容。
通过使用HABTM,您甚至可以将一个图像与文章和艺术家相关联,并且如果需要,可以将相同的图像关联多次。
希望这是有道理的,书中有更多关于HABTM的信息,http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM
答案 1 :(得分:0)
我建议使用Polymorphic Behavior。我经常为涵盖图像,文档等的Binary
模型执行此操作。这些模型代表可与任意数量的模型(照片,申请人等)相关联的物理文件。
多态关系的要点是该表有2个额外的字段。一个字段指示要关联的模型的名称(例如Photo
,Applicant
等),另一个字段指示外键值(即id
例如,photos
表中的字段。
答案 2 :(得分:0)
对于所有寻找使用多态行为和MeioUpload的工作解决方案的人,请查看this。我现在正在使用它,似乎工作正常。