php - Laravel Eloquent 对 mysql 表进行 AND 操作的方法

标签 php mysql laravel eloquent

我是 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');

声明表 audiencestags 后,您可以利用 Audiencetags 之间的关系 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/

相关文章:

c# - 添加新记录时外键错误

php - 代码点火器 PHP : Error when load config database in controller?

Laravel 5.2 干预图像 500 服务器错误

php - 如何在 laravel 中删除问号形式的 url

php - WordPress自定义帖子类型管理页面布局

php - 为什么 print 和 echo 在 "for"循环中表现不同

php - MySQL INNER JOIN 查询问题

mysql - 如何在 FPDF 中使用 CURDATE()

angularjs - 如何在单个服务器上提供多个前端(AngularJS)应用程序和1个后端(Laravel)应用程序?

php - PHP : Gearman vs. pthreads 中的异步数据库/服务调用