php - 如何编写一个雄辩的查询,将这 2 个查询连接、合并或联合为 1?
问题描述
// 2 个 eloqent 集合合并
$publicCategories = Category::where('menu', '=', 1)
->where('display_scope', 1)
->orderBy('parent_id')
->get();
$privateCategories = Category::where('menu', '=', 1)
->whereIn('id', $ids)
->orderBy('parent_id')
->get();
$categories = $publicCategories->merge($privateCategories);
// 上面的这个查询执行了这 2 个重复的 MySQL 查询。
结果是正确的,但是需要 2 次查询。
如何编写一个雄辩的查询,将这 2 个查询连接、合并或联合为 1?
解决方案
为什么要分开买?你可以用Orwhere
这个。
$publicprivateCategories = Category::where('menu', '=', 1)
->whereIn('id', $ids)
->orWhere('display_scope', 1)
->orderBy('parent_id')
->get();
更新
$publicprivateCategories = Category::where('menu', '=', 1)
->where(function($q) use($ids){
$q->whereIn('id', $ids)->orWhere('display_scope', 1);
})
->where('id', '!=', 2)
->orderBy('parent_id')
->get();
这样,您将获得两个(公共或私人)类别。
推荐阅读
- google-cloud-platform - 为什么我会收到“所选时间范围内没有可用数据”?
- amazon-web-services - 使用 Net::Amazon::Attribute::Review 获取客户评论
- flutter - 在颤振中如何改变FAB(Floating Action Button)自定义动画图标
- html - 更改 html 样式的背景,也更改大小
- python - Python十进制精度
- java - 如何测试 LinkedHashMap 的值和键?
- powershell - powershell分配中双嵌套类型限定符的含义是什么?
- php - 左连接与多个 on 子句 Eloquent Laravel
- xamarin.forms - 我可以在编辑文本后刷新吗
- javascript - 初学者问题:想知道为什么需要重复该功能?