我所說的用戶標簽是指用戶可以關注標簽。Tagfollow 我有一個名為Tagfollow 的模型class Tagfollow extends Model{ public function user() { return $this->belongsTo(User::class); }}除此之外,我還有 User、Tag 和 Post 模型,它們之間的關系如下。郵政user() belongsTo App\User tags() belongsToMany App\Tag用戶posts() hasMany App\Posttagfollow() hasMany App\Tagfollow標簽posts() belongsToMany App\Post我不完全確定關系是否正確。我想獲取用戶關注的所有標簽的 ID,然后獲取每個標簽的所有帖子。這是我到目前為止的代碼。 $user = Auth::user(); $tag_ids= $user->tagfollow()->pluck('tag_id')->toArray(); $tags=Tag::whereIn('id', $tag_ids)->get(); $post_ids=[]; foreach ($tags as $tag) { $post_ids = array_merge($post_ids, $tag->posts()->pluck('post_id')->toArray()); } $posts =Post::whereIn('user_id', $user_ids)->whereIn('id', $post_ids)->orderby('created_at', 'desc')->paginate(20);$user_ids 是授權用戶的關注者的用戶 ID 列表。這段代碼可以工作,它只獲取其中一個 whereIn 子句的帖子。必須有一種更好的方法來使用 Eloquent 來做到這一點,比如只從用戶標簽獲取帖子,而不是獲取標簽 id,然后循環訪問每個標簽。
獲取用戶標簽的所有帖子?
慕田峪9158850
2023-10-21 16:35:54