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

Laravel雄辩的whereIn与where内部关系

在Laravel中,Eloquent ORM 提供了一种非常流畅和强大的方式来构建和执行数据库查询。whereInwhere 是用于构建查询条件的两种常用方法。虽然它们在功能上有所不同,但它们都是构建SQL查询的一部分,并且在内部都使用 Laravel 的查询构建器。

where 方法

where 方法是最基本的方法之一,用于添加一个WHERE条件到查询中。它可以非常灵活地使用,支持多种参数形式,例如:

代码语言:javascript
复制
// 基本用法
$query->where('column', '=', 'value');

// 简化用法,默认为等于
$query->where('column', 'value');

// 闭包用法,用于更复杂的条件
$query->where(function ($query) {
    $query->where('column', 'value')
          ->orWhere('another_column', 'another_value');
});

whereIn 方法

whereIn 方法专门用于构建 IN 类型的SQL查询,这是一种特定类型的 where,用于指定列的值必须包含在指定的数组中:

代码语言:javascript
复制
// whereIn用法
$query->whereIn('column', [1, 2, 3]);

这将生成类似于以下的SQL语句:

代码语言:javascript
复制
sql复制SELECT * FROM table WHERE column IN (1, 2, 3);

内部关系和实现

在内部,wherewhereIn 都是通过 Laravel 的查询构建器实现的。whereIn 实际上是 where 方法的一个特殊情况,它简化了在查询中使用 IN SQL表达式的过程。

  • 查询构建器:Laravel 的查询构建器 (Illuminate\Database\Query\Builder) 提供了一个灵活的系统来动态构建查询。它维护了一个条件列表,这些条件最终会被编译成最终的SQL语句。
  • 方法实现where 方法可以处理多种类型的参数,并根据这些参数构建相应的SQL片段。而 whereIn 方法则专门处理数组参数,并生成 IN 子句。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Postgresql内部缓存OS缓存关系

postgresql内部缓存OS缓存 1 pgsql数据与日志刷盘 mysql通常使用odirect使数据绕过OS缓冲区落盘,wal还是使用系统缓冲。这样数据写盘不会造成系统刷脏抖动。...在pgsql中数据是OS缓冲绑定,自己没有做字节对齐,也不使用odirect方式直写设备,社区对数据直写态度也一直很悲观,原因是之前也做过很多探索,结果都不是很好: link 在pgsql中数据到磁盘上会经历两层缓存...: 对比下mysql来看,数据绕过VFS缓存,日志使用VFS缓存 2 pgsql查看内部缓存和OS缓存 使用缓存原因肯定是因为磁盘慢,参考下面数据有个直观感受 http://blog.codinghorror.com...文件系统架构 文件系统架构抽象 在PgSQL中,读写数据文件不使用O_DIRECT,数据文件落盘依赖OS缓冲区,自身SHAREDBUFFER形成两层缓冲架构。...Page Cache是内核存储介质重要缓存结构,当我们使用write()或者read()读写文件时,假如不使用O_DIRECT标志位打开文件,我们均需要经过Page Cache来帮助我们提高文件读写速度

50330
  • php之laravel学习常见错误3(连载中)

    下面是我们整理phplaravel学习常见错误以及解决办法,我还会持续更新,请关注 ---- ---- ## 错误1: 错误代码: No message 错误原因: 查看这个路由参数,缺少参数...中添加src ---- ---- ## 错误3: 错误代码: Invalid argument supplied for foreach() (View: D:\Laravel\resources...\views\Personal\qtspace.blade.php) 错误原因: sql错误 解决办法: 将 Blog::where('user_id',$user_id)->whereIn('accessable...',['public','protected'])->toSql() 改为 Blog::where('user_id',$user_id) ->whereIn('accessable',['public...\LARAVEL123\Test\Reals\View \Foo\FACE.BLADE.PHP 解决办法: 解析错误:语法错误、意想不到“$DATA”(TY变量)、期望“、”或“”(视图:D:\ SHIXXIIA

    97610

    Laravel5.1 框架数据库查询构建器用法实例详解

    本文实例讲述了Laravel5.1 框架数据库查询构建器用法。分享给大家供大家参考,具体如下: 今儿个咱说说查询构建器。它比运行原生SQL要简单些,它操作面儿也是比较广泛。...'%base')- get(); // 类似 } 2.2 orWhere orWhere和where接收参数是一样,当where逻辑没有查找到 or查找到了 返回or结果,当where查找到了...2.4 whereIn和whereNotIn whereIn是查找列值在给定一组数据中: public function getArticlesInfo() { $articles =...Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php...常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

    3.6K41

    laravel 学习之路 数据库操作 查询数据

    运行 Select 查询 你可以使用 DB Facade select 方法来运行基础查询语句我们在上面创建路由里增加个 index 路由 dump 是 laravel 打印函数可以把它理解为...传递给 select 方法第一个参数就是一个原生 SQL 查询,而第二个参数则是需要绑定到查询中参数值。通常,这些值用于约束 where 语句。参数绑定用于防止 SQL 注入。...testId = :id', ['id' => 1]); dump($binding); } 查询构造器 Laravel 数据库查询构造器为创建和运行数据库查询提供了一个方便接口...它可用于执行应用程序中大部分数据库操作,且可在所有支持数据库系统上运行。 Laravel 查询构造器使用 PDO参数绑定来保护您应用程序免受 SQL 注入攻击。...($data); } sql 中还有个 IN 用法 laravel 中就是 whereIn() 第一个参数还是字段名第二个参数是数组 function getList() {

    3.2K20

    laravel5.6框架操作数据curd写法(查询构建器)实例分析

    () 参数说明:(一)参数是列名,(二)参数是操作符,(三)参数是该列要比较值 $data = DB::table('users') - where('id', ' =', 1) - where('name...方法验证给定列值是否在给定数组中: $data = DB::table('users') - whereIn('id', [1, 2, 3]) - get(); //orderBy() 方法排序 $...)- delete(); //paginate() 方法分页 每页显示数量 //注意:目前使用 groupBy 分页操作不能被Laravel有效执行 $data = DB::table('users'...操作数据ORM 更多关于Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程...》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

    2.2K30

    laravel 模型Eloquent ORM 查询

    up前面玩了 DB 查询,但是laravel开发基本不怎么使用db方式查询,应该有更强大 模型 Model 介绍 Laravel Eloquent ORM 提供了一个漂亮、简洁 ActiveRecord...每个数据库表都有一个对应「模型」用来该表交互。你可以通过模型查询数据表中数据,以及在数据表中插入新记录。 在开始之前,请确保在 config/database.php 中配置数据库连接。...laravel Model 使用先进 Eloquent ORM 但也有优缺点 优点是数据库操作变简单安全 缺点也明显数据库操作变缓慢笨重 Eloquent ORM 作为 laravel 中亮点...Eloquent 派生,改为由 BaseModel 派生,就不用特殊指定表名,表名模型名称直接一致,也不再驼峰呀什么了。...$TestMdl->select('id', 'title', 'describe') ->where('title', '', '文章1') ->whereIn

    4.4K10

    跟我一起学Laravel-数据库操作和查询构造器

    wehere条件 OR条件 其它where条件 whereBetween / whereNotBetween whereIn / whereNotIn whereNull / whereNotNull...使用sql语句执行插入 基本插入操作 更新操作 使用sql语句执行更新操作 基本更新操作 指定列增减 删除操作 使用sql执行删除 基本删除操作 悲观锁 事务处理 查看日志记录 其它操作 在Laravel...中执行数据库操作有两种方式,一种是使用\DB外观对象静态方法直接执行sql查询,另外一种是使用Model类静态方法(实际上也是Facade实现,使用静态访问方式访问Model方法,内部采用了__...参数union相同。...sql查询有效,对Eloquent ORM同样有效,因为它内部也是调用了DB类数据库连接。

    6.3K30

    laravel in 查询使用方法详解

    今天遇到多条件搜索,其中需要用到in查询,但是laravel不支持 [ ‘type’, ‘in’, ‘1,2,3’] 这样写法 经过一波百度,也没发现什么好方法。...其中一种方法是: $where = function ($query) {$query- whereIn('id', [1,2])- orWhere('d_id', '=', '83');} 这样确实可以解决...但我总觉得还有更好方法,找到了 DB::Raw(); 开始我是这样用 ? 但是这样总会在sql后面出现is null,感觉很奇怪,于是看了下laravel源码 ?...如果只传一个参数的话,就会出现is null 情况 所以只需要 ? 这样就可以完美解决,如果有更好方法 欢迎大家评论。...以上这篇对laravel in 查询使用方法详解就是小编分享给大家全部内容了,希望能给大家一个参考。

    3.1K61

    Laravel框架源码解析之模型Model原理用法解析

    本文实例讲述了Laravel框架源码解析之模型Model原理用法。分享给大家供大家参考,具体如下: 前言 提前预祝猿人们国庆快乐,吃好、喝好、玩好,我会在电视上看着你们。...根据单一责任开发原则来讲,在laravel开发过程中每个表都应建立一个model对外服务和调用。...null, $value = null) public function whereRaw($sql, $bindings = [], $boolean = 'and') public function whereIn...更多关于Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及...《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

    1.8K30

    Laravel find in set排序实例

    做项目遇到个需求,需要对结果集中数据进行指定规则顺序排列。...例如,用户状态有四种: = 未激活;1= 正常;2= 禁用;3= 软删除 现在需求是,我要按照:正常- 未激活- 禁用- 删除;这个顺序来进行排序,同时按照注册时间降序,网上查了很多资料,国内提到这个很少.../questions/35594450/find-in-set-in-laravel-example/35594503 find_in_set 复杂应用: public function get_teacher_list...$result_data; } 专门拿出来看一下: $ids = array(1,17,2); $ids_ordered = implode(',', $ids); $items = User::whereIn...('id', $ids) - orderByRaw(DB::raw("FIELD(id, $ids_ordered)")) - get(); 以上这篇Laravel find in set排序实例就是小编分享给大家全部内容了

    92651
    领券