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

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

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