我有一對多的關系。所以我可以使用這段代碼來顯示所有帖子。$tag = Tag::where('slug', $slug)->first();$posts = $tag->posts;它工作正常,但我想過濾孩子顯示。例如:$posts = $tag::whereHas('posts', function($query){$query->where('accept', 1)})->get();但它得到標簽而不是帖子。知道如何解決我的問題嗎?
3 回答

繁星coding
TA貢獻1797條經驗 獲得超4個贊
在 Post 模型中,您必須像這樣定義與標簽的關系
public function tags(){
return $this->hasMany(Tag::class);
}
這就是您可以從特定標簽獲取帖子的方式
$slug = "my-slug";
$posts = Post::whereHas('tags', function($query) use ($slug){
$query->where('slug', $slug)
})->where('accept', 1)->get();

牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
您可以使用
$tag = Tag::where('slug', $slug)
->with(['posts' => function($q) {
$q->where('accept', 1);
}])->first();
$posts = $tag->posts;
- 3 回答
- 0 關注
- 164 瀏覽
添加回答
舉報
0/150
提交
取消