
laravel 5.5 -- Query Builder
发布日期:2025-04-04 02:10:17
浏览次数:12
分类:精选文章
本文共 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();
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年05月02日 16时52分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!