博客
关于我
laravel 5.5 -- Query Builder
阅读量:794 次
发布时间: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复用技术与软件可维护性的关联分析及扩展策略
查看>>
kubernetes1.5.2--部署dashboard服务
查看>>
Java复用技术在不同行业项目中的适应性分析与扩展
查看>>
kubernetes1.5.2--部署DNS服务
查看>>
kubernetes1.5.2--部署node-problem-detector服务
查看>>
kubernetes1.5.2--部署监控服务
查看>>
kubernetes1.5.2集群部署过程--安全模式
查看>>
kubernetes1.5.2集群部署过程--非安全模式
查看>>
Kubernetes下容器化应用部署实战
查看>>
Kubernetes中间件容器化工具Operator详解
查看>>
Kubernetes健康检查与探测机制详解
查看>>
Kubernetes入门实验:namespace
查看>>
Kubernetes入门:构建和管理容器化应用的强大工具
查看>>
Kubernetes包管理工具Helm详解
查看>>
Kubernetes单master节点高可用集群安装
查看>>
Kubernetes原理详解
查看>>
Kubernetes原生的CICD工具Tekton详解
查看>>
Kubernetes多master节点高可用集群安装
查看>>
Kubernetes存储之Persistent Volumes简介
查看>>