@Dimon3x

Как вывести посты разных моделей у которых один общий тег?

Имеются модели изображения, видео, теги.

Для тегов использовал полиморфные связи (Many To Many (Polymorphic)) всё по доке.

class Tag extends Model
{
    public function images()
    {
        return $this->morphedByMany('App\Image', 'taggable');
    }
   
    public function videos()
    {
        return $this->morphedByMany('App\Video', 'taggable');
    }
}

Пробую вывести пока так

$tag = Tag::find(1);
       
foreach ($tag->images as $image) {
    dump($image);
}
       
foreach ($tag->videos as $video) {
    dump($video);
}

Но этот вариант мне не нравится, как можно сделать одним циклом?

Или вывести двумя циклами и объединить коллекции?
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Web Developer
Можно просто объединить полученные коллекции в одну
$merged = $tag->videos->merge($tag->images);
Но тут будет нюанс в том что методы используемые в цикле моделей Images и Video должны быть одинаковыми
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы