Laravel如何从数据库删除数据_Laravel destroy和delete方法区别

发布时间 - 2025-12-17 00:00:00    点击率:
Laravel中delete是实例方法,需先查询模型再删除且不触发事件;destroy是静态方法,通过主键直接删除并触发deleting/deleted事件,适合需要钩子的场景。

在 Laravel 中删除数据库数据是日常开发中常见的操作。Laravel 提供了多种方式来实现数据删除,其中最常用的是 deletedestroy 方法。虽然它们都能实现删除功能,但使用场景和调用方式有所不同。

delete 方法:实例上的删除操作

delete 是 Eloquent 模型实例的方法,用于删除已经查询出来的单条记录。

它通常配合查询构造器使用,先获取模型实例,再调用 delete 方法。

示例:

  • $user = User::find(1);
  • if ($user) {
  •   $user->delete();
  • }

也可以配合条件查询链式调用:

  • User::where('status', 'inactive')->delete();

注意:这种情况下虽然用了 delete,但其实是通过查询构造器直接执行 SQL 删除,不会触发模型的 deleting 和 deleted 事件。

destroy 方法:静态批量删除

destroy 是 Eloquent 模型的静态方法,可以根据主键 ID 直接删除一条或多条记录,无需先查询出模型实例。

它会自动触发模型的 deleting 和 deleted 事件,适合需要执行模型钩子的场景。

示例:

  • User::destroy(1);
  • User::destroy([1, 2, 3]);
  • User::destroy(1, 2, 3);

以上三种写法都可以,支持传入多个参数或数组。

主要区别总结

  • 调用方式不同:delete 是实例方法,destroy 是静态方法。
  • 使用前提不同:delete 需要先获取模型对象,destroy 直接通过 ID 删除。
  • 是否触发事件:destroy 会触发模型事件;而使用查询构造器调用 delete(如 User::where(...)->delete())不会触发。
  • 适用场景不同:如果只是简单删除几条 ID 已知的数据,用 destroy 更方便;如果需要根据复杂条件删除且不关心事件,用查询构造器 + delete 效率更高。

软删除与 forceDelete

如果模型启用了软删除(SoftDeletes),调用 delete 或 destroy 默认只会设置 deleted_at 字段。

要彻底删除数据,需使用 forceDelete 方法:

  • $user = User::find(1);
  • $user->forceDelete();

基本上就这些。理解 delete 和 destroy 的区别,能帮助你在实际项目中更合理地选择删除方式。


# laravel  # 区别  # sql  # if  # delete  # 对象  # 事件  # 数据库  # 链式  # 的是  # 主键  # 多个  # 都能  # 有所不同  # 只会  # 用了  # 更高  # 三种 


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


相关推荐: Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Laravel如何实现API版本控制_Laravel版本化API设计方案  潮流网站制作头像软件下载,适合母子的网名有哪些?  微信小程序 scroll-view组件实现列表页实例代码  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel如何使用模型观察者?(Observer代码示例)  Laravel如何与Inertia.js和Vue/React构建现代单页应用  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  无锡营销型网站制作公司,无锡网选车牌流程?  linux top下的 minerd 木马清除方法  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  大型企业网站制作流程,做网站需要注册公司吗?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  如何用搬瓦工VPS快速搭建个人网站?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  *服务器网站为何频现安全漏洞?  如何在 Pandas 中基于一列条件计算另一列的分组均值  千库网官网入口推荐 千库网设计创意平台入口  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何快速上传建站程序避免常见错误?  微信小程序 input输入框控件详解及实例(多种示例)  如何快速搭建虚拟主机网站?新手必看指南  如何用景安虚拟主机手机版绑定域名建站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel如何处理和验证JSON类型的数据库字段  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  EditPlus中的正则表达式实战(6)  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel如何实现模型的全局作用域?(Global Scope示例)  Laravel如何处理异常和错误?(Handler示例)  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何在云服务器上快速搭建个人网站?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Thinkphp 中 distinct 的用法解析  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  三星、SK海力士获美批准:可向中国出口芯片制造设备  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  如何在阿里云部署织梦网站?  详解Android——蓝牙技术 带你实现终端间数据传输  如何用PHP快速搭建CMS系统?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南