我有下一张 table :
图像(id、文件名...)
页面(标题、slug ...)
用户(用户名、电子邮件...)
我创建了一个imageables表来保持图像关系
image_id/imageable_id/类型(页面/用户等)
如果我每个模型只需要一个图像字段,它就可以正常工作。
但是,如果我需要在一页中使用 header_image 和 paragraph_image 等示例,我应该如何进行?
如果我想要一个header_image/paragraph_image,我可以将字段直接保留在模型中(header_image_id、paragraph_image_id),但是如果我有一个顶部 slider 和一个图库怎么办对于这篇文章..我需要 2 个 ManyToMany 关系。
是否可以将它们全部保存在同一个imageables表中?理论上,我需要另一列用于唯一性(例如字段名称。)
最佳答案
我认为您没有正确创建表格和关系。在您的情况下,我将创建 2 个不同的表:具有数据透视表关系的页面和图像。
- 页面表:id、标题、slug...
- 图像表:ID、类型、文件名...
- 数据透视表(图像和页面):page_id、image_id。
然后您可以简单地使用图像表的类型列来设置要放置该图像的位置。您可以将类型设置为标题、段落或 slider ...
$image = new Image;
$image->type= 'header';
$image->filename = 'yourimage.jpg';
...
$image->save();
在您的 View 中,您可以检索您想要的标题、段落、 slider 的图像,如下所示:
$page->images()->where('type', 'header')->first();
希望对你有帮助!
关于php - Laravel 5.1 - 多列的多态关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35553642/