У меня есть классические полиморфные отношения «многие ко многим» c.
Например, у меня есть две модели Post
и Video
. Модели могут быть помечены с моделью Tag
. Tag
может принадлежать многим Post
с и / или Video
с. И Post
(Video
) может иметь несколько Tag
с.
Теперь я хочу получить все подключенные модели (Post
с И Video
с) для одного тега.
Я знаю, что могу сделать $videos = $tag->videos
, но тогда я получаю только видео. Я хочу сделать что-то вроде $models = $tag->getAllConnectedModels()
, чтобы получить массив всех Post
s и Video
s. Как я могу это сделать?
Вот определения моделей
class Post extends Model
{
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable');
}
}
class Video extends Model
{
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable');
}
}
class Tag extends Model
{
public function posts()
{
return $this->morphedByMany('App\Post', 'taggable');
}
public function videos()
{
return $this->morphedByMany('App\Video', 'taggable');
}
}