实现可以包含许多其他模型的模型

问题描述 投票:1回答:1

我正在尝试实现一个模型,该模型可以作为一个文件夹,可以包含其他不同类型的模型。我该如何实现呢?

这是我的数据库(简化示例):

images
    id - integer
    name - string
    format - string

videos
    id - integer
    name - string
    length - integer
    codec - string

folder
    id - integer
    name - string

我希望能够做$folder->elements并获得Image元素中所有Videos和Folders的集合。

为此,我正在考虑如下的数据透视表:

folder_elements
    folder_id - integer
    element_id - integer
    element_type -string

并使用Laravel提供的morphMany关系,但我认为(根据文档中的示例)它应该以相反的方式使用(当元素属于不同的其他元素时,而不是当元素具有不同的其他元素时) 。

任何人都可以帮我完成这个吗?

php laravel eloquent
1个回答
1
投票

我假设您已了解如何设置这些关系:

class Folder hasMany Images
class Folder hasMany Videos

然后,

public function folderFiles() {
   return new Collection([
      'images' => $this->images,
      'videos' => $this->videos
   ]);
}

我没有测试它,但你明白了。

© www.soinside.com 2019 - 2024. All rights reserved.