Laravel 模型
发布日期:2025-04-04 03:46:19 浏览次数:9 分类:精选文章

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

Laravel模型查询方法指南

在 Laravel 中通过模型查询数据是开发生活中常见操作。本文将详细介绍 Laravel 的模型查询方法,帮助开发者高效地查询数据库数据。

一、获取模型数据

Laravel 提供了 getall 两种基本的模型查询方法。两者的主要区别是调用方式:all 方法可以直接获取所有数据,而 get 方法默认情况下会执行一次查询获取所有记录。

// 获取所有用户
\App\User::all();
// 或者使用 get 方法
\App\User::get();
//.echo '获取所有用户';
//uju shah这个方法是不是也有相同的效果呢?
//工作表里有很多行记录,让 user-model 对应这个表。
// 使用 where 方法加上 get 获取符合条件的用户
\App\User::where('id', '>',5)
->get();

二、处理结果集

模型查询的结果通常用 Illuminate\Support\Collection 存储,包含一系列 stdClass 对象。开发者可以通过遍历集合中的对象访问具体字段。

// 获取用户集合
$users = User::get();
// 遍历用户列表
foreach ($users as $user) {
echo $user->name;
}

三、获取单行或单列数据

在某些情况下,可能只需要获取一行或一列数据。Laravel 提供了 firstvalue 方法来实现这一点。

// 获取唯一用户
$user = User::where('name', 'marun')
->first();
// 获取用户的特定字段
$user = User::where('name', 'marun')
->value('password');
// 获取指定列的数据
$user = User::where('name', 'marun')
->pluck('password');
// 自定义列名
$user = User::where('name', 'marun')
->pluck('password', 'name');

四、分页处理

当处理大量数据时,可以使用 chunk 方法将数据分成小块,适合与 Artisan 命令配合使用。

//chunk(2, function ($users) {
// dump($users);
// });
// 该方法适用于在练习场景中处理大量用户数据
// 停止 chunk 运算
User::orderBy('id')
->chunk(2, function ($users) {
if ($users[0]->name == 'Marun') {
dump($users[0]);
return false;
}
});

五、聚合函数

查询构建器支持多种聚合方法,如 count, max, min, avg, 和 sum,可以用在查询结果集中。

$users = User::get();
$count = $users->count();
$maxId = $users->max('id');
$minId = $users->min('id');
$avgId = $users->avg('id');
$totalId = $users->sum('id');

六、加筛选条件

可以在聚合上添加条件,确保结果符合特定筛选要求。

//统计符合条件的用户数量
$count = User::where('age’, '>', 18)
->get()
->count();

七、自定义字段查询

使用 select 方法可以自定义返回的字段列表,distinct 用于重复数据去重。

// 返回所有员工名单
$users = User::select('name')
->get();
// 去重后的员工名单
$users = User::select('name')
->distinct()
->get();

八、原生查询语句

使用 DB::raw 执行原生 SQL 语句,但需注意 SQL 注入安全。

// 结合 where 方法使用 DB::raw
$users = User::select(DB::raw('count(*) as user_count , name '))
->where('id', '<>', 1)
->groupBy('name')
->get();
// 返回特定字段的数据
$users = User::selectRaw('name')
->get();
// 使用 whereRaw 方法
$users = User::whereRaw('price > IF( name= "marun", 100, ?)', [50])
->get();

九、复杂查询

使用 havingRaw 处理复杂的 SQL 子句,注意字段是否存在严格模式支持。

// SQL 错误提示 1055,解决方法是设置数据库配置中的 strict 为 false
$orders = User::groupBy('name')
->havingRaw('price > 300')
->get();

十、排序操作

可以使用 orderByRaw 定自定义排序逻辑,例如计算字段间的差异。

$orders = User::orderByRaw('updated_at - created_at DESC')
->get();

通过以上方法,开发者可以灵活应对各类数据库查询需求,从基础查询到高级聚合及原生语句的使用,都能方便地完成任务。

以上内容仅供参考,具体实施前建议结合项目实际需求及数据库规范进行调整。

上一篇:Laravel 深入理解路由和URL生成
下一篇:Laravel 开源项目 『 糖果盒子 - Web 开发者的书签导航 』

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月15日 08时25分32秒