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

Laravel whereDoesntHave联合whereHas

Laravel中的whereDoesntHavewhereHas是用于在Eloquent关系模型中进行查询的方法。

whereDoesntHave方法用于筛选出不具有指定关系的模型。它接受两个参数,第一个参数是关系的名称,第二个参数是一个闭包函数,用于进一步筛选关系模型。该方法返回一个查询构建器实例,可以继续链式调用其他查询方法。

whereHas方法用于筛选出具有指定关系的模型。它接受两个参数,第一个参数是关系的名称,第二个参数是一个闭包函数,用于进一步筛选关系模型。该方法返回一个查询构建器实例,可以继续链式调用其他查询方法。

这两个方法通常用于查询具有特定关系的模型,例如查询所有没有关联订单的用户,或者查询具有至少一个关联订单的用户。

以下是一个示例代码,演示如何使用whereDoesntHavewhereHas方法:

代码语言:txt
复制
use App\Models\User;

// 查询没有关联订单的用户
$usersWithoutOrders = User::whereDoesntHave('orders')->get();

// 查询具有至少一个关联订单的用户
$usersWithOrders = User::whereHas('orders', function ($query) {
    $query->where('status', 'completed');
})->get();

在上述示例中,User模型具有一个orders关系,可以通过whereDoesntHave方法查询没有关联订单的用户,通过whereHas方法查询具有至少一个关联订单且订单状态为"completed"的用户。

对于Laravel框架,腾讯云提供了云服务器CVM、云数据库MySQL、云存储COS等产品,可以用于支持Laravel应用的部署和运行。具体产品介绍和链接如下:

  • 云服务器CVM:提供可扩展的云服务器实例,支持多种操作系统和应用部署。产品介绍
  • 云数据库MySQL:提供高性能、可扩展的云数据库服务,适用于Laravel应用的数据存储。产品介绍
  • 云存储COS:提供安全可靠的云存储服务,用于存储和分发Laravel应用的静态资源。产品介绍

以上是关于whereDoesntHavewhereHas方法的解释和相关腾讯云产品的介绍。希望对您有帮助!

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

相关·内容

laravel ORM关联关系中的 with和whereHas用法

返回的每个用户信息中都会多一个posts数组,但是posts数组可能为空(不符合查询要求),没有筛选功能 with 更像 sql 中的 join,就是你存不存都有执行,存在结果不为空,存在关联结果,不存在结果为空,关联结果为空 whereHas...查询存在的关联关系,还有对应的 whereDoesntHave ,查询不存在的关联关系,像下面这样: // 获取发布文章标题中有first的用户 $users= User::whereHas('posts...function ($query) { $query- where('title', 'like', '%first%'); })- get(); 结果会查找发布过文章标题包含first的部分用户,有筛选功能 whereHas...就像用户发文章, user 存在关联关系 post,如果是 user- with(‘post’),你会得到所有用户和用户发布的文章信息,没发文章的用户就没有文章信息,如果是 user- whereHas...这就是我对 with 和 whereHas 的一些理解了 以上这篇laravel ORM关联关系中的 with和whereHas用法就是小编分享给大家的全部内容了,希望能给大家一个参考。

4K31
  • Laravel学习记录--Model

    Laravel 自带的 软删除功能 就利用全局作用域从数据库中提取「未删除」的模型。编写自定义的全局作用域可以提供一个方便、简单的方法来确保给定模型的每个查询都受到一定的约束。...使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]的好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照我的另一个博客 - - - Laravel...$res = Muser::has('phone.person','>',2)->get(); dd($res); } 你还可以使用更高级的语法进行限制,通过whereHas...orwhereHas,在has查询里设置[where]条件 如查询用户至少有一个号码,并且号码包含7这个数字 public function show(){ $res = Muser::whereHas...doesntHave('phone')->get(); dd($res); //获取没有电话号码的用户 } 同时你还可以基于doesntHave实现更高级的限制,使用whereDoesntHave

    13.6K20

    3分钟短文 | Laravel复杂SQL超多WHERE子句,本地作用域你没用过

    Laravel提供的 eloquent orm 使用面向对象的方式封装了PDO数据库操作,使用起来非常方便,对于复杂的SQL操作也游刃有余。...更厉害的是加上多表联合查询,那就真的是 sql 的噩梦了。然而对于laravel而言,这些全过程都可以拼装,你只需要关注筛选和操作,剩下的组装sql的过程,laravel都帮你做好了。...优雅的SQL laravel号称最优雅的PHP框架,不是浪得虚名,其设计的编程方式,可有效令人产生编程愉悦感。...Laravel 的软删除功能就是利用此特性从数据库中获取 “未删除”的模型。 你可以编写你自己的全局作用域,很简单、方便的为每个模型查询都加上约束条件。看官方给出的示例: ?...调用的使用选用就可以了: $users = User::active()->that()->get(); 写在最后 为了代码能够最大程度的复用,laravel也是很拼了。就这个本地作用域,我给五颗星。

    2.8K10

    3分钟短文:Laravel查询构造器,告别手写SQL的艰苦岁月

    引言 鉴于上一章标题引起一些开发同学的巨大兴趣,本文我们接着此种行文方式继续我们的“Laravel宇宙”系列文章。...下面是laravel里用的最多的写法: $users = DB::table('users')->where('type', 'donor')->get(); 这些是不是顺多了,一气呵成,要的就是这个感觉...写一条不附加任何约束条件的查询: $users = DB::table('users')->get(); 还有复杂的多表联合查询,使用 INNER JOIN 方式: DB::table('users')...,[true]); 为了编程愉悦感,还是回归我们的laravel推荐的链式操作的方式来演示更多更复杂的功能。...contacts')->where('vip', true)->where('created_at', '>', Carbon::now()->subDay())->get(); 复杂的查询莫过于使用多表联合查询

    1.8K11

    3分钟短文:Laravel查询构造器,告别手写SQL的艰苦岁月

    引言 鉴于上一章标题引起一些开发同学的巨大兴趣,本文我们接着此种行文方式继续我们的“Laravel宇宙”系列文章。...下面是laravel里用的最多的写法: $users = DB::table('users')->where('type', 'donor')->get(); 这些是不是顺多了,一气呵成,要的就是这个感觉...写一条不附加任何约束条件的查询: $users = DB::table('users')->get(); 还有复杂的多表联合查询,使用 INNER JOIN 方式: DB::table('users')...,[true]); 为了编程愉悦感,还是回归我们的laravel推荐的链式操作的方式来演示更多更复杂的功能。...contacts')->where('vip', true)->where('created_at', '>', Carbon::now()->subDay())->get(); 复杂的查询莫过于使用多表联合查询

    1.2K10

    Laravel 参数验证的疑与惑

    验证器怎么创建的,谁创建的 Laravel 文档调用验证器,除了通过控制器,还有就是通过Facades的方式创建验证器对象。...Laravel验证规则的扩展有两种方式。...1 通过extend方法扩展 //这是一个简单的参数比较的验证规则,Laravel5.8中提供,Laravel5.5中未提供 //验证规则如下: 'max_num'=>'gte:min', Validator...从而导致在当前扩展的验证规则中,只能过获取到需要验证的数据,而获取不到其他的字段数据,无法进行联合字段的验证。像上面比较两个字段的大小的验证规则就无法实现。...例如,一个验证规则如下,表示用当期类的validateMinNum对参数进行验证,那么,这样的一个功能,如何在Laravel中实现呢。

    3.4K00

    Laravel迁移数据库!

    我们本期要使用laravel自带的迁移功能,在不操作任何数据库的条件下,完成基础的数据构建。 迁移文件 本文假设你已经正确地配置了环境变量文件,并且通过数据库配置项,系统已经可以正常连接到数据库了。...在项目文件里,不出意外你会在目录 database/migrations 下发现 2014_10_12_000000_create_users_table.php 文件, 这个是laravel自带的用于创建...renameColumn('promoted', 'is_promoted'); 或者在回滚方法中对某些新增的字段进行删除: $table->dropColumn('votes'); 常用的约束比如主键约束,联合主键约束...或者修改表的时候进行调用: $table->primary('primary_id'); // 指定主键 $table->primary(['first_name', 'last_name']); // 联合主键...写在最后 本文介绍了laravel中使用迁移功能操作数据库的创建,修改,移除字段,删除表等,把开发者从手动维护数据库的状态中解脱出来。这样也为团队协作时的有章可循做了铺垫。

    97310

    Laravel迁移数据库!

    我们本期要使用laravel自带的迁移功能,在不操作任何数据库的条件下,完成基础的数据构建。 迁移文件 本文假设你已经正确地配置了环境变量文件,并且通过数据库配置项,系统已经可以正常连接到数据库了。...在项目文件里,不出意外你会在目录 database/migrations 下发现 2014_10_12_000000_create_users_table.php 文件, 这个是laravel自带的用于创建...renameColumn('promoted', 'is_promoted'); 或者在回滚方法中对某些新增的字段进行删除: $table->dropColumn('votes'); 常用的约束比如主键约束,联合主键约束...或者修改表的时候进行调用: $table->primary('primary_id'); // 指定主键 $table->primary(['first_name', 'last_name']); // 联合主键...写在最后 本文介绍了laravel中使用迁移功能操作数据库的创建,修改,移除字段,删除表等,把开发者从手动维护数据库的状态中解脱出来。这样也为团队协作时的有章可循做了铺垫。

    1.1K00

    在 Mac 中怎么安装 Composer 包管理器?新的 Composer 国内镜像是什么?

    下载很慢,所以我们在替换一下镜像 原来的中国全量镜像算是凉了吧,停止 CDN 的服务了,看了一下提供商是 bootcss,也是在前段时间 bootcss 所有的静态资源库全部失效,跳转到 cf 源 现在有 Laravel...China 社区联合又拍云与优帆远扬共同合作推出的公益项目,旨在为广大 PHP 用户提供稳定和高速的 Composer 国内镜像服务 所以我们还能使用国内的镜像 使用 Composer 镜像加速有两种选项...这样所有项目都能惠及(推荐); 选项二:单独项目配置; 选项一、全局配置(推荐) composer config -g repo.packagist composer https://packagist.laravel-china.org...选项二、单独使用 如果仅限当前工程使用镜像,去掉 -g 即可,如下: composer config repo.packagist composer https://packagist.laravel-china.org

    2.2K40
    领券