Я борюсь за создание отношений между двумя пивотами, которые разделяют одну модель.
Этими пивотами являются item_tag и playlist_tag.Ниже я описал таблицу и уже созданные отношения.
Таким образом, в настоящее время я могу получать элементы для списков воспроизведения, списки воспроизведения для элементов, теги для элементов, теги для списков воспроизведения.
What i 'Мне трудно сделать следующее:
- Получить элементы, которые имеют те же теги, что и данный список воспроизведения
- Получить списки воспроизведения, которые имеют те же теги, что и данный элемент
Я полагаю, что это может быть сделано с помощью 'manyThrough', но, честно говоря, я потерян.
Еще несколько подробностей отношений
- Плейлист может состоять из множества элементов
- Элементы могут принадлежать многим плейлистам
- Поэтому элемент item_playlist pivot
Теги можно применять как к плейлистам, так и к элементам
- Элемент может иметь много тегов
- теги могут быть применены ко многим элементам
- , так что элемент_tag pivot
- В списке воспроизведения может быть много тегов *Теги 1041 *
- могут быть применены ко многим спискам воспроизведения
- , поэтому playlist_tag pivot
Пример структуры таблицы
Table : items
id
name
Table : playlists
id
name
Table : item_playlist
item_id
playlist_id
Table : tags
id
name
Table : item_tag
item_id
tag_id
Table : playlist_tag
playlist_id
tag_id
Пример структуры класса / отношения
class Playlist extends Model
{
public function items()
{
return $this->belongsToMany(Item::class)->withTimestamps();
}
public function tags()
{
return $this->belongsToMany(Tag::class)->withTimestamps();
}
}
...
class Item extends Model
{
public function playlists()
{
return $this->belongsToMany(Playlist::class)->withTimestamps();
}
public function tags()
{
return $this->belongsToMany(Tag::class)->withTimestamps();
}
}
...
class Tag extends Model
{
public function items()
{
return $this->belongsToMany(Item::class)->withTimestamps();
}
public function playlists()
{
return $this->belongsToMany(Playlist::class)->withTimestamps();
}
}