【发布时间】:2017-06-02 05:49:07
【问题描述】:
我有一个多态图像模型 (public $morphTo = ['imageable' => []];) 和一个使用它的 Post 模型。
我希望帖子有 2 o 3 张图片用于非常不同的目的(帖子标题、特色图片和背景图片)
由于 Image 模型处理图像的复杂性以及它在其他几个类(文章、页面等)上的使用,我非常想在这样的帖子上使用它,但每种类型只有一个图像,这就是我使用的原因morphOne。在Post 模特上这样做过:
public $morphOne = [
'header_image' => [
Image::class,
'name' => 'imageable'
],
'featured_image' => [
Image::class,
'name' => 'imageable'
],
'background_image' => [
Image::class,
'name' => 'imageable'
],
];
但恢复图像似乎总是检索图像表中的第一个,即使两者都保存在那里。保存任何替换第一条记录,删除删除第一条记录,等等......
我可以猜到问题所在,可能检索 MorphOne 关系的 ONE 记录会获得第一个匹配 type 和 id 的 imageable 属性的记录。
问题是:有没有办法让这种结构发挥作用?关系上的参数,也许是不同的变形关系?
感谢您的帮助!
【问题讨论】:
-
从未尝试过 octobercms(但 - 但几乎没有 laravel 背景)我想知道如果你给它起不同的名字会发生什么,
'name' => 'imageable'。 编辑或者给图像表添加额外的列(如果可能的话),就像in this example一样。 -
使用关系条件在 10 月实施了几乎相同的解决方案。请参阅下面的答案!
-
我明白了,这是一种操纵多态关系的有趣方式。
标签: php laravel-5 octobercms