新闻中心

Lar*el如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法

2025-12-04
浏览次数:
返回列表
Lar*el软删除通过添加deleted_at字段和使用SoftDeletes trait实现,调用delete()时填充该字段而不真正删除数据,查询默认忽略已删除记录,可用withTrashed()或onlyTrashed()获取包含或仅含已删除数据,restore()方法可恢复数据,forceDelete()则永久删除记录。

laravel如何使用软删除(soft deletes)功能_eloquent软删除与数据恢复方法

Lar*el 的 Eloquent ORM 提供了“软删除”功能,允许你标记数据为已删除,而不是真正从数据库中移除。这样可以在需要时恢复数据,同时保持数据完整性。实现软删除非常简单,只需几个步骤即可完成。

启用软删除功能

要在模型中启用软删除,需执行以下操作:

  • 在对应的数据表中添加 deleted_at 字段,通常使用 softDeletes() 方法创建迁移。
  • 在 Eloquent 模型中引入 Illuminate\Database\Eloquent\SoftDeletes trait。
示例:创建带有 softDeletes 的迁移
php artisan make:migration add_deleted_at_to_users_table --table=users

在迁移文件中:

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->softDeletes();
    });
}

然后运行迁移命令:

php artisan migrate

接着在模型中使用 SoftDeletes trait:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model
{
    use SoftDeletes;
}

执行软删除操作

启用软删除后,调用模型的 delete() 方法不会真正删除记录,而是将 deleted_at 字段设置为当前时间戳。

$user = User::find(1);
$user->delete(); // 此时 deleted_at 被填充,数据仍存在于数据库

查询时,Eloquent 会自动过滤掉已软删除的记录,即默认查询只返回未删除的数据。

星辰Agent 星辰Agent

科大讯飞推出的智能体Agent开发平台,助力开发者快速搭建生产级智能体

星辰Agent 378 查看详情 星辰Agent

查询软删除的数据

你可以通过特定方法访问已被软删除的数据:

  • withTrashed():获取包括已删除在内的所有记录。
  • onlyTrashed():仅获取已软删除的记录。
// 获取所有用户,包括已删除的
$users = User::withTrashed()->get();

// 只获取已删除的用户
$trashedUsers = User::onlyTrashed()->get();

恢复软删除的数据

使用 restore() 方法可以将软删除的数据恢复,即将 deleted_at 字段清空。

// 恢复单个已删除的用户
$user = User::withTrashed()->find(1);
$user->restore();

// 批量恢复
User::onlyTrashed()->where('active', 0)->restore();

注意:调用 restore() 后,deleted_at 值会被设为 null,该记录重新参与常规查询。

强制删除(永久删除)

如果希望彻底删除某条记录,绕过软删除机制,可使用 forceDelete() 方法。

$user = User::find(1);
$user->forceDelete(); // 数据从数据库中永久移除

对已软删除的记录再次调用 forceDelete() 也会将其永久删除。

基本上就这些。Lar*el 软删除机制简洁实用,适合需要保留历史数据或支持数据回滚的场景。只要记得加字段、引入 trait,并合理使用查询作用域,就能轻松管理删除与恢复逻辑。

以上就是Lar*el如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法的详细内容,更多请关注php中文网其它相关文章!


# 就能  # 衢州seo网络推广代理价格  # 塑料挤出机免费推广网站  # 天津seo公司竞价公告  # 物流唐山网站优化公司  # seo外链推广厂商定制  # 优化网站关键词排名象客  # dreamweaver网站建设教程视频  # 视频推广网站有那个人  # 山西太原seo  # 顺德商品seo优化代理  # 只需  # 已被  # laravel  # 你可以  # 也会  # 如何实现  # 移除  # 数据库中  # 如何使用  # 作用域  # 数据恢复  # ai  # php  # 软删除 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 从OpenAI API响应中高效提取生成文本  Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量  Android Studio计算器C键功能异常排查与修复教程  Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口  Golang如何安装Swagger工具_GoSwagger文档生成环境  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  C++ explicit关键字防止隐式转换_C++构造函数安全规范  css链接悬停下划线样式如何自定义_使用::after结合content和transition  微信聊天记录怎么加密_微信聊天记录加密方法  J*aScript数据结构转换:将对象数组按类别分组  AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南  苹果手机如何防止被恶意App追踪  QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录  如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单  如何在网页中实现特定地点的随机图片展示  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  在Pyomo中实现基于变量的条件约束:Big-M方法详解  小米14应用无法联网原因分析_小米14网络权限修复  漫蛙漫画登录站点 漫蛙2正版漫画快速访问  迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法  J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析  wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  汽水音乐在线版入口_汽水音乐网页播放手册  Win11怎么开启高性能模式_Windows 11电源计划优化设置  win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】  深入理解J*a编译器的兼容性选项:从-source到--release  qq游戏免费畅玩入口_qq游戏电脑版快速启动  今日头条怎么同步内容到抖音_今日头条内容同步到抖音教程  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】  win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】  Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口  汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口  解决J*aScript中重复选择项的确认对话框显示问题  斑马英语APP如何开启夜间护眼阅读_斑马英语APP夜间模式与低蓝光设置教程  微信商城在哪里打开【步骤】  单射、满射与双射的关系 一文理清所有逻辑  TikTok国际版官网直达_TikTok国际版官网直达进入在线观看  PHP 枚举:根据字符串获取枚举案例的策略与实现  解决移动端滚动问题的overflow属性应用指南  如何在CSS中使用浮动制作导航栏_float实现水平菜单  qq游戏大厅官方下载_qq游戏免费下载安装入口  探索高级语言到原生C/C++的转译:挑战与内存管理策略  大象笔记网页版入口 印象笔记网页版登录入口  在命令行怎么运行html项目_命令行运行html项目方法【教程】  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比  AO3镜像入口大全 AO3网页版内容访问全集  知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法 

搜索