mysql - 如果满足多对多关系条件,Laravel 仅显示模型?
问题描述
所以我有一个模型“Category”和一个具有多对多关系的模型“Post”。
基本上我在某处输出类别,我想要这种类型的伪输出;
- 如果属于某个类别的任何帖子的“隐藏”属性设置为 true,则不要返回此类别。(因此,即使该类别有 100 个帖子,如果其中有一个“隐藏”为真,请不要返回该类别。
这是我迄今为止尝试过的,但如果所有帖子都被标记为隐藏,它似乎只会隐藏类别。如果其中一个“隐藏”为假,即使其他 99 个为真,它也会显示。这与我想要发生的事情完全相反。
Category::latest()->whereHas('posts', function ($query) {
return $query->where('hidden', false);
})->get();
希望有人可以提供帮助。
解决方案
你需要扭转你的状况。您当前的查询是“所有具有未隐藏帖子的类别”。您想要“所有没有隐藏帖子的类别”。
Category::latest()->whereDoesntHave('posts', function ($query) {
return $query->where('hidden', true);
})->get();
推荐阅读
- css - 字体大小样式不适用于锚点作为 fontawsome
- reporting-services - SSRS 指示箭头百分比变化
- azure - 我们可以同时使用语音标记和同义词吗?
- opencv - OpenCV相机模型图解——为什么图像没有倒置?
- php - 让 Laravel 5 和 Angular 5 在同一个域/端口上工作
- asp.net - 使用 VB.NET 将 Webforms Autofac 参数传递给构造函数
- java - 在 java 中从 MySQL 读取 MEDIUMBLOB
- vb.net - 合并具有不同列名的两个数据表
- python - LSTM 预测中的错误形状
- maven - 无法运行仪表规格,但可以使用 Maven 运行