laravel - Laravel中的多对多并按关系条件选择数据
问题描述
我的 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();
但它没有给我需要的结果有人可以帮我吗?
谢谢!
解决方案
推荐阅读
- ios - Swift - 如何过滤多维数组
- python - 是否可以通过 QML 从 PySide2 插槽(服务调用)获取对象列表?
- opengl - 了解这个 YUV 到 RGB 转换的着色器
- bash - 在显示实时输出的函数中执行命令
- android - Firestore 多次写入同一个文档并停止工作一段时间
- python - 如何正确使用 pitch_shift (librosa)?
- java - 我如何从 Spring Security 抛出自定义响应
- azure-devops - 在 Linux 代理上读取 JSON 文件并将其部署在 DCOS 上
- google-app-engine - 由于付费应用的配额,AppEngine blobstore.CreateUploadURL 调用失败
- spring-boot - Spring Boot 2.1.5 不记录现有端点