我的 Laravel 项目中有下一张表
ID | 标题 |
---|---|
1 | post1 |
2 | post2 |
3 | post3 |
4 | post4 |
5 | post5 |
标签
ID | 姓名 |
---|---|
1 | 标签1 |
2 | 标签2 |
3 | 标签3 |
4 | 标签4 |
5 | 标签5 |
post_tag
post_id | tag_id |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
1 | 5 |
2 | 2 |
3 | 2 |
3 | 3 |
3 | 5 |
4 | 2 |
4 | 3 |
4 | 4 |
4 | 5 |
5 | 3 |
5 | 4 |
换句话说
邮政 | 标签 |
---|---|
post1 | 标签1 标签2 标签3 标签5 |
post2 | 标签2 |
post3 | 标签2 标签3 标签5 |
post4 | 标签2 标签3 标签4 标签5 |
post5 | 标签3 标签4 |
我有查询 - 类似的东西:(+tag2+tag3-tag4
可以是不同的长度;+ = 包含;- = 结果除外)我如何才能仅使用之前带有“+”的标签和之前带有“-”的标签发布帖子?
使用示例表:post1(有tag2 AND tag3 AND NOT tag4) post3(有tag2 AND tag3 AND NOT tag4)
我尝试使用下一个
$posts = Post::query()
->with('tags')
->whereHas('tags', function ($query) {
$query->whereIn('tags.name', ['tag2', 'tag3'])
->whereNnotIn('tags.name', ['tag4']);
})
->get();
但它没有给我需要的结果有人可以帮我吗?
谢谢!