我是 Laravel 的新手。 我有一个像这样的表 Audience_tags:
tag | audience
Tall | Anurag
Nice | Anurag
Tall | Kapil
Nice | Simon
所以,
If I query for ['Tall'] it should return Anurag, Kapil
If I query for ['Nice'] it should return Anurag, Simon
If I query for ['Tall', 'Nice'] it should only return Anurag
目前,我正在这样做:
$audienceIds = DB::table("audience_tags")->whereIn("tag", $request->tagIds)->pluck("audience");
但它会返回 Anurag、Kapil 和 Simon 的 ['Tall'、'Nice']
最佳答案
您将无法使用该结构转义group by
$audiences = \DB::table("audience_tags")
->whereIn("tag", $request->tagIds)
->groupBy('audience')
->havingRaw('count(tag) = ?', count($request->tagIds))
->pluck('audience');
声明表 audiences
和 tags
后,您可以利用 Audience
和 tags
之间的关系 belongToMany
Tag
模型(假设 tag_id
是表 Tags
中的主键)
$tagIds = $request->tagIds;
$audiences = Audience::whereHas('tags', function($tag) use ($tagIds) {
$tag->whereIn('tag_id', $tagIds);
})->get(); //or pluck whatever attribute
关于php - Laravel Eloquent 对 mysql 表进行 AND 操作的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57395029/