我有下一张桌子:
图片(id,filename ...)
页面(标题,slug ...)
用户(用户名,电子邮件...)
我创建了一个 imageables 表来保持图像关系
image_id / imageable_id / 类型(页面/用户等)
如果每个模型只需要一个图像字段,它就可以正常工作。
但是,如果我需要在一个页面中使用 header_image 和 paragraph_image ,我该怎么办?
如果我想要一个 header_image / paragraph_image ,我可以直接在模型中保留该字段(header_image_id,paragraph_image_id),但如果我有一个顶部滑块和一个图库,该怎么办?对于这篇文章..我需要2个很多关系。
是否可以将所有这些内容保存在同一个 imageables 表中?从理论上讲,我需要另一列unicity(例如字段名称。)
答案 0 :(得分:0)
我认为你没有正确地创建你的表和关系。在您的情况下,我将创建2个不同的表:具有数据透视表关系的页面和图像。
然后,您可以简单地使用Images表的type列来设置要放置该图像的位置。您可以将类型等于标题或段落或滑块...
$image = new Image;
$image->type= 'header';
$image->filename = 'yourimage.jpg';
...
$image->save();
在您的视图中,您可以像这样检索标题,段落,滑块所需的图像:
$page->images()->where('type', 'header')->first();
希望它有所帮助!