Реализация модели, которая может иметь много других моделей - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь реализовать модель, которая ведет себя как папка, которая может содержать другие модели другого типа.Как я могу это реализовать?

Это база данных, которую я имею (упрощено для пояснения):

images
    id - integer
    name - string
    format - string

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

folder
    id - integer
    name - string

Я ожидал, что смогу сделать $folder->elements и получить коллекцию всехImage s и Video s в элементе Folder.

Для этого я думаю о сводной таблице, подобной следующей:

folder_elements
    folder_id - integer
    element_id - integer
    element_type -string

И используйте morphManyотношения, которые обеспечивает Laravel, но я думаю (согласно примерам в документах), что он должен использоваться наоборот (когда элемент принадлежит другим элементам, а не когда элемент имеет другие элементы).

Кто-нибудь может мне помочь в этом?

1 Ответ

1 голос
/ 25 марта 2019

Полагаю, у вас есть понимание, как установить эти отношения:

class Folder hasMany Images
class Folder hasMany Videos

Тогда

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

Я не проверял это, но вы поняли идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...