laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法

发布时间 - 2025-12-19 00:00:00    点击率:
使用 DB Facade 可在 Laravel 中执行原生 SQL,支持 select、insert、update、delete、statement 和 unprepared 方法,适用于复杂查询或结构变更,需注意参数绑定与安全风险。

如果您需要在 Laravel 中执行复杂的数据库查询,而查询无法通过查询构造器或 Eloquent 实现,则可以使用 DB Facade 来直接运行原生 SQL 语句。以下是几种使用 DB Facade 执行原生 SQL 查询的方法:

本文运行环境:MacBook Pro,macOS Sonoma

一、使用 DB::select 执行查询语句

DB::select 方法用于执行 SELECT 类型的原生 SQL 查询,返回结果集。该方法适用于需要获取数据但不修改数据库的场景。

1、在控制器或路由闭包中引入 DB Facade,确保已通过 use 语句导入 Illuminate\Support\Facades\DB。

2、调用 DB::select('SELECT * FROM users WHERE active = ?', [1]),其中 ? 为参数占位符,第二个参数为绑定的值数组。

3、若使用命名绑定,可写成 DB::select('SELECT * FROM users WHERE id = :id', ['id' => 1]),提高可读性。

二、使用 DB::insert 执行插入操作

DB::insert 方法用于执行不返回结果集的数据操作语句,如 INSERT。执行后返回布尔值表示是否成功。

1、编写包含字段和值的 INSERT 语句,例如 DB::insert('INSERT INTO users (name, email, password) VALUES (?, ?, ?)', ['Alice', 'alice@example.com', 'password'])

2、确保传入的参数数量与占位符匹配,避免 SQL 错误。

三、使用 DB::update 执行更新操作

DB::update 方法用于执行 UPDATE 语句,返回受影响的行数,适合用于修改已有记录。

1、构造更新语句,如 DB::update('UPDATE users SET name = ? WHERE id = ?', ['Bob', 5])

2、检查返回值是否大于 0,以判断是否有记录被实际更新。

四、使用 DB::delete 执行删除操作

DB::delete 方法用于执行 DELETE 语句,同样返回受影响的行数,用于从数据库中移除记录。

1、编写删除语句,例如 DB::delete('DELETE FROM users WHERE status = ?', ['inactive'])

2、注意添加 WHERE 条件,防止误删全部数据。

五、使用 DB::statement 执行无返回语句

DB::statement 方法用于执行不需要返回结果的 SQL 语句,如 CREATE、DROP、ALTER 等 DDL 操作。

1、执行数据库结构变更命令,如 DB::statement('CREATE TABLE IF NOT EXISTS profiles (id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, bio TEXT)')

2、确保在安全环境下执行此类操作,避免生产环境误操作。

六、使用 DB::unprepared 执行多语句或非预处理语句

DB::unprepared 方法用于执行不能被预处理的 SQL 语句,或一次性执行多个语句,常用于迁移或初始化脚本。

1、调用 DB::unprepared('SET FOREIGN_KEY_CHECKS=0; TRUNCATE TABLE users; SET FOREIGN_KEY_CHECKS=1;') 来执行多个命令。

2、注意此方法绕过预处理机制,存在 SQL 注入风险,仅应在受信任的上下文中使用。


# word  # laravel  # cad  # macbook  # mac  # ai  # 路由  # macos  # cos  # red  # sql  # if  # select  # int  # 闭包  # delete  # table  # 数据库  # 绑定  # 多个  # 适用于  # 行数  # 运行环境  # 不需要  # 已有  # 可在  # 第二个  # 此类 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: php打包exe后无法访问网络共享_共享权限设置方法【教程】  如何用西部建站助手快速创建专业网站?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  千库网官网入口推荐 千库网设计创意平台入口  如何批量查询域名的建站时间记录?  焦点电影公司作品,电影焦点结局是什么?  如何在腾讯云服务器快速搭建个人网站?  jQuery 常见小例汇总  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Android GridView 滑动条设置一直显示状态(推荐)  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何在VPS电脑上快速搭建网站?  Laravel如何使用Sanctum进行API认证?(SPA实战)  Laravel PHP版本要求一览_Laravel各版本环境要求对照  如何实现javascript表单验证_正则表达式有哪些实用技巧  怎么用AI帮你为初创公司进行市场定位分析?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  JavaScript常见的五种数组去重的方式  成都网站制作公司哪家好,四川省职工服务网是做什么用?  nginx修改上传文件大小限制的方法  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Swift开发中switch语句值绑定模式  iOS UIView常见属性方法小结  Python文件操作最佳实践_稳定性说明【指导】  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  jQuery validate插件功能与用法详解  企业网站制作这些问题要关注  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  郑州企业网站制作公司,郑州招聘网站有哪些?  Laravel中的Facade(门面)到底是什么原理  Laravel Fortify是什么,和Jetstream有什么关系  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  米侠浏览器网页背景异常怎么办 米侠显示修复  如何在建站之星绑定自定义域名?  node.js报错:Cannot find module 'ejs'的解决办法  如何注册花生壳免费域名并搭建个人网站?  无锡营销型网站制作公司,无锡网选车牌流程?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何处理表单验证?(Requests代码示例)  PHP 500报错的快速解决方法