【发布时间】:2023-04-06 22:35:01
【问题描述】:
考虑如下 3 个表格
class Post extends Model
{
public function tags()
{
return $this->belongsToMany(Tag::class, 'post_tags', 'post_id', 'tag_id');
}
}
posts表
|id | title |
+---+---------+
|1 | post1 |
|2 | post2 |
|3 | post3 |
|4 | post4 |
tags表
|id | value |
+---+---------+
|1 | tag01 |
|2 | tag02 |
|3 | tag03 |
|4 | tag04 |
post_tags表
| post_id | tag_id |
+----------+---------+
| 1 | 1 |
| 2 | 3 |
| 2 | 4 |
| 3 | 1 |
| 4 | 1 |
| 4 | 4 |
唯一同时包含tag01 和tag04 的帖子是id = 4 的帖子
但是当我用这个代码得到posts时
Post::whereHas('tags', function($q) {
$q->whereIn('tag_id', [1, 4]);
}
我收到了所有带有tag01 或tag04 的帖子。
我想得到Posts,其中tag01 和tag02 在其tags 关系中。
如何使用Eloquent 或如果使用QueryBuilder 无法实现此结果
【问题讨论】:
标签: php laravel eloquent has-and-belongs-to-many