我正在尝试实现一个行为类似于文件夹的模型,该文件夹可以包含其他不同类型的模型。我该如何实施?
这是我拥有的数据库(为便于说明):
images
id - integer
name - string
format - string
videos
id - integer
name - string
length - integer
codec - string
folder
id - integer
name - string
我希望能够进行$folder->elements
并获得Image
元素中所有Video
和Folder
的集合。
为此,我正在考虑如下所示的数据透视表:
folder_elements
folder_id - integer
element_id - integer
element_type -string
并使用Laravel提供的morphMany关系,但我认为(根据文档上的示例)应该以相反的方式使用(当一个元素属于不同的其他元素时,而不是当一个元素具有不同的元素时)其他元素)。
有人可以帮助我实现这一目标吗?
答案 0 :(得分:1)
我认为您已经了解如何设置这些关系:
class Folder hasMany Images
class Folder hasMany Videos
然后
public function folderFiles() {
return new Collection([
'images' => $this->images,
'videos' => $this->videos
]);
}
我没有测试它,但是你明白了。