У меня есть две сущности: Post
(сообщения) и Tag
(теги). Они оба в отношениях многих ко многим. Итак, у меня есть сводная таблица с именем PostTag
(post_tag). Я хочу перечислить все теги [включая a) сводную таблицу и b) заголовок сообщения ] , принадлежащие тем сообщениям, автором которых является зарегистрированный пользователь. Итак, я сделал что-то вроде этого:
$tags = collect();
$posts = Post::where('user_id', auth()->id())->with('tags')->get();
$posts->each(function($post, $key) use ($tags){
$post->tags->each(function($tag, $key) use ($tags, $post) {
$tag->post_title = $post->title;
$tags->push($tag);
});
});
return $tags;
Однако мне также нужно разбить результат на страницы. Поэтому я попытался вернуть это вместо:
return $tags->paginate(10);
Но пагинат - это не метод Collection
(может быть, Builder
)
Методы отношения:
// Post.php
public function tags() {
return $this->belongsToMany(Tag::class)->withPivot('updated_at');
}
// Tag.php
public function posts(){
return $this->belongsToMany(Post::class);
}
У меня такое ощущение, что должен быть какой-то более простой способ сделать это, чего я, возможно, не знаю:
PostTag::someQueryThatFetchesThoseTagsWithPostTitle();
// If I could do something like this, paginate() would have been available