本文共 2364 字,大约阅读时间需要 7 分钟。
本文将详细介绍Eloquent查询方法的实现,包括模糊查询、关联查询以及高级查询功能。对于开发者而言,熟悉这些方法将极大提升数据库操作效率。
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();
左连接和跨连接需谨慎使用。
查询支持通过 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/