首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WhereHas内部的WhereNotIn

WhereHasWhereNotIn 是 Laravel 框架中用于构建 Eloquent 查询的查询作用域(Query Scopes)方法。这些方法允许你在关联模型上执行复杂的查询条件。

WhereHas

WhereHas 方法用于在关联模型上设置条件,并且只获取满足这些条件的结果。这对于处理“有特定关联的模型”非常有用。

基础概念

  • WhereHas 允许你在关联模型上应用额外的查询条件。

优势

  • 使查询更加清晰和模块化。
  • 减少 N+1 查询问题。

类型与应用场景

  • 一对一关系:例如,查找所有有至少一个订单的用户。
  • 一对多关系:例如,查找所有发表过至少一篇特定类型文章的作者。

示例代码

代码语言:txt
复制
$users = User::whereHas('orders', function ($query) {
    $query->where('status', 'completed');
})->get();

WhereNotIn

WhereNotIn 方法用于排除在指定数组中的值。它通常与 whereHas 结合使用,以排除具有特定关联的模型。

基础概念

  • WhereNotIn 允许你指定一个字段,其值不应在给定的数组中。

优势

  • 简化排除特定条件的查询构建。

类型与应用场景

  • 排除特定关联:例如,查找所有没有与特定类别关联的产品。

示例代码(结合 whereHas):

代码语言:txt
复制
$users = User::whereHas('roles', function ($query) {
    $query->whereNotIn('name', ['admin', 'editor']);
})->get();

WhereHas 内部的 WhereNotIn

当你在 whereHas 内部使用 whereNotIn 时,你实际上是在指定一个条件,该条件要求关联模型不包含在指定的数组中的值。

为什么会这样/原因是什么?

这种组合通常用于复杂的查询场景,其中你需要找到满足某些关联条件的模型,但同时这些关联模型又不能满足其他特定条件。

如何解决这些问题?

使用上述的 whereHaswhereNotIn 组合即可解决这类问题。

示例代码

代码语言:txt
复制
$users = User::whereHas('orders', function ($query) {
    $query->whereNotIn('product_id', [1, 2, 3]);
})->get();

在这个例子中,我们查找了所有有订单的用户,但这些订单的产品 ID 不应该是 1、2 或 3。

总之,WhereHasWhereNotIn 是 Laravel 中非常有用的查询构建器方法,它们允许你构建复杂的查询条件,同时保持代码的清晰和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

30秒

3维球体的内部任意面选择。

1分34秒

【赵渝强老师】Hive的内部表

45秒

BOSHIDA电源模块的内部结构特点

30分18秒

不怕被问到!彻底搞懂Java内部类的使用

18.3K
7分49秒

07,谈int与Integer区别及Integer内部的缓存设计

19分16秒

131-尚硅谷-Scala核心编程-内部类的基本使用.avi

21分12秒

第9章:方法区/92-方法区的内部结构1

8分12秒

第9章:方法区/93-方法区的内部结构2

7分37秒

第5章:虚拟机栈/47-栈桢的内部结构

7分46秒

73-依赖注入之为类类型的属性赋值(级联方式和内部bean)

2分7秒

mybatis框架入门必备教程-013-JDK-接口的匿名内部实现创建对象

7分53秒

day15_面向对象(下)/24-尚硅谷-Java语言基础-内部类的分类

领券