Вы можете добиться этого, используя различные методы.
отношение whereHas
Получение сообщений с отношением whereHas
вместо первого извлечения тегов приведет к тому, что вам придется выполнять только один циклуникальный массив.
$posts = Posts::whereHas('tags', function (Builder $query) {
$query->whereIn('id', Auth::user()->tags->pluck('id')->toArray());
});
Теперь вы выбираете только актуальные сообщения, не получив сначала ненужные теги.
О запросах отношений можно прочитать в документации Laravel.
"Сквозные" -отношения
Laravel также предоставляет удобный (да) способ запроса этого, определяя дополнительные отношения типа , имеет множество через .
/**
* Get all of the tagged posts for this user
*/
public function taggedPosts()
{
return $this->hasManyThrough('App\Post', 'App\Tag');
}
Вы должны определить это в пользовательской модели (вероятно, User.php).
Теперь вы можете просто просмотреть Auth::user()->taggedPosts
, например,
@foreach (Auth::user()->taggedPosts as $post)
{{ $post->title }}
@endforeach
Подробнее вдокументация Laravel.