首页经验laravel查询数据库 laravel查询入门到精通

laravel查询数据库 laravel查询入门到精通

圆圆2025-11-11 07:00:24次浏览条评论
1. Laravel 使用where和闭包实现(status = 'active' AND (score gt; 80 OR type = 'vip'));2. leftJoin关联用户与订单表,包含无订单用户;3. joinSub实现子查询获取每个用户最新订单;4. groupBy结合筛选订单中超过500名的用户;5.

laravel怎么使用查询构造器(query builder)执行复杂查询

Laravel 的构造查询器(Query Builder)是一个强大的工具,能够帮助你在不写 SQL 说明:SELECT、INSERT、UPDATE、DELETE 等语句,同时防止 SQL 注入。 1. 多条件查询与布什where

在实际开发中,经常需要组合多个条件进行筛选。你可以使用where、orWhere和闭包来实现变量条件。使用闭包组织“湿度内的逻辑”,比如(status = 'active' AND Score > 80) OR (type = 'vip')示例代码:

$users = DB::table('users')lt;brgt;-gt;where('status', 'active')lt;brgt; -gt;where(function ($query) {lt;brgt; $query-gt;where('score', 'gt;', 80)lt;brgt; -gt;orWhere('type', 'vip');lt;brgt; })lt;brgt; -gt;get();登录后复制

这会生成类似:WHERE status = 'active' AND (score gt; 80 OR type = 'vip')2. Join 方法。Laravel 支持内连接、左连接、右连接等。leftJoin 常用于任选关联数据(如统计用户订单数)和多条件支持 示例:获取用户及其订单信息

$users = DB::table('users')lt;brgt; -gt;select('users.*', 'orders.amount', 'orders.created_at as order_date')lt;brgt; -gt;leftJoin('orders', 'users.id', '=', 'orders.user_id')lt;brgt; -gt;where('orders.amount', 'gt;', 100)lt;brgt; -gt;orWhereNull('orders.id') // 包含无订单的用户lt;brgt; -gt;get();登录后复制3. 子查询支持(from 子查询和 select 子查询)

Laravel 查询作为子查询使用,适用于分页后统计、最新记录筛选等场景。

使用 from(DB:raw("(...) as alias")) 实现 from 子查询 在 select 中使用子查询需辅助 DB::raw $latestOrders = DB::table('orders')lt;brgt; -gt;selectRaw('user_id,MAX(created_at) as max_date')lt;brgt; -gt;groupBy('user_id');lt;brgt;lt;brgt;$result = DB::table('users')lt;brgt; -gt;joinSub($latestOrders, 'latest', function ($join) {lt;brgt; $join-gt;on('users.id', '=', 'latest.user_id');lt;brgt; })lt;brgt; -gt;join('orders', function ($join) {lt;brgt; $join-gt;on('users.id', '=', 'orders.user_id')lt;brgt; -gt;on('orders.created_at', '=', 'latest.max_date');lt;brgt; })lt;brgt; -gt;select('users.name', 'orders.amount')lt;brgt; 4.分组与聚合函数结合有

当你要对g​​roupBy的结果做条件过滤时,不能用凡,而用有。

500 个用户

$highSpenders = DB::table('orders')lt;brgt; -gt;select('user_id', DB::raw('SUM(amount) as Total'))lt;brgt; -gt;groupBy('user_id')lt;brgt; -gt;having('total', 'gt;', 500)lt;brgt; -gt;get();登录后复制5. limit/take limit和offset/skip控制分页distinct重复记录

示例:按评分降序取前10个不同城市的活跃用户

$users = DB::table('users')lt;brgt; -gt;select('city', 'name', 'score')lt;brgt; -gt;where('status', 'active')lt;brgt; -gt;distinct()lt;brgt; -gt;orderBy('score', 'desc')lt;brgt; -gt;take(10)lt;brgt; -gt;get();登录后复制

基本上就这些。查询生成器图像来自:求。只要合理的组合方法,就能写出又安全的数据库操作代码。

以上就是Laravel怎么使用查询构造器(Query Builder)执行复杂查询的内容详细,更多请关注乐哥常识网其他相关! 相关标签: laravel 工具聚合函数 laravel sql count 文章 select 使用闭包删除数据库 大家都在看: laravel 优雅地处理应用的启动和关闭钩子_laravel 应用启动与关闭钩子处理方法 Laravel 中怎么使用__()辅助函数实现文本翻译Laravel中的契约(Contracts)是什么,和Facade有什么关系 laravel怎么监听数据库事件查询_laravel数据库查询事件监听方法Laravel如何配置Supervisor来持久化运行队列worker

Laravel怎么使
c++如何创建列表 c++如何创建cpp文件夹
相关内容
发表评论

游客 回复需填写必要信息