博客
关于我
laravel 5.5 -- Query Builder
阅读量:795 次
发布时间:2023-01-30

本文共 2364 字,大约阅读时间需要 7 分钟。

Eloquent查询方法详解

本文将详细介绍Eloquent查询方法的实现,包括模糊查询、关联查询以及高级查询功能。对于开发者而言,熟悉这些方法将极大提升数据库操作效率。

基础查询

基本Select

DB::table('users') 方法用于从 users 表中获取数据。这是Eloquent中最常用的一种方式。

DB::table('users')->get();

输出将返回一个包含用户对象的集合。

目录选择

使用 select() 方法可以选择需要获取的字段。

DB::table('users')->select('id', 'age as user_age')->get();

条件检索

Eloquent支持多种条件查询方式,以下是几种常见方法:

DB::table('users')->where('name', 'John')->first();

返回单个用户对象。

DB::table('users')->where('id', 17)->value('age');

返回单个字段的值。

DB::table('users')->orderBy('id')->value('age');

按照 id 顺序排序后,返回 age 字段最小的值。

统计和聚合

这些方法用于计算和汇总数据。

DB::table('users')->count();

返回记录总数。

DB::table('users')->max('id');

返回 id 的最大值。

DB::table('users')->where('class_id', '1')->average('age');

按单元格返回平均值。

优化查询方法

倒序/导航

默认排序顺序是 asc(升序),可以通过 orderBy() 方法调换。

DB::table('users')->orderBy('id', 'desc')->get();

分割成小组

使用 chunk() 方法可以将结果分组处理。

DB::table('users')->orderBy('id')->chunk(100, function ($users) {    foreach ($users as $user) {        // ...    }    return false; // 可视情况选择返回或退出});

高级查询

复杂查询需要结合多种方法。

DB::table('users')->select(    DB::raw('count(*) as user_count, status'))->where('status', '<>', 1)->groupBy('status')->get();

关联查询

支持多种类型的关联,包括内连接、左连接和跨连接。

$users = DB::table('users')    ->join('contacts', 'users.id', 'contacts.user_id')    ->join('orders', 'users.id', 'orders.user_id')    ->select('users.*', 'contacts.phone', 'orders.price')    ->get();

左连接和跨连接需谨慎使用。

JSON查询

查询支持通过 raw() 方法使用复杂 JSON 表达式。

$users = DB::table('users')    ->where('options->language', 'en')    ->get();

动作管理

插入机制

基本插入操作。

DB::table('users')->insert(['email' => 'john@example.com', 'votes' => 0]);

批量插入。

DB::table('users')->insert([    ['email' => 'taylor@example.com', 'votes' => 0],    ['email' => 'dayle@example.com', 'votes' => 0]]);

获取插入的自增 ID。

DB::table('users')->insertGetId(['email' => 'john@example.com', 'votes' => 0]);

更新操作

简单更新。

DB::table('users')->where('id', 1)->update(['votes' => 1]);

字段复合更新。

DB::table('users')->where('id', 1)->update(['option->enabled' => true]);

增加/减少操作

增加数量。

DB::table('users')->increment('votes');DB::table('users')->increment('votes', 5);

减少数量。

DB::table('users')->decrement('votes');DB::table('users')->decrement('votes', 5);

结合条件更新。

DB::table('users')->increment('votes', 1, ['name' => 'John']);

删除操作

删除所有记录。

DB::table('users')->delete();

条件删除。

DB::table('users')->where('votes', '>', 100)->delete();

清空表记录。

DB::table('users')->truncate();

转载地址:http://wugyk.baihongyu.com/

你可能感兴趣的文章
Java反射
查看>>
java反射介绍
查看>>
Java反射代码编写
查看>>
JAVA反射机制
查看>>
JAVA反射机制
查看>>
java反射机制完成List map 与List javabean ,List 对象 之间的互相转换
查看>>
Java反射获取private属性和方法(子类,父类,祖先....)
查看>>
java反射(1):Class代表类
查看>>
Java反序列化-CC2分析,从零基础到精通,收藏这篇就够了!
查看>>
Java反序列化和JNDI注入漏洞案例实战
查看>>
JAVA反序列化漏洞修复解决方法
查看>>
java反编译工具--jd-gui
查看>>
java取整和java四舍五入方法
查看>>
Java可变参数列表
查看>>
Java各中依赖包介绍
查看>>
Java合同管理系统(源码+mysql+文档)
查看>>
Java合肥市公务员报名管理系统(源码+mysql+文档)
查看>>
Java合肥惠康养老平台app(源码+mysql+文档)
查看>>
Java后端使用socketio,实现小程序答题pk功能
查看>>
Java后端开发书架
查看>>