全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-690-7320

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

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  # 软删除 


相关文章: J*aScript中赋值与自增运算符的复杂交互与执行机制  内存检查:在VS Code中调试C++时的内存视图  126邮箱网页版官方入口 126邮箱账号在线登录平台  Golang如何优雅处理error_Golang error处理最佳实践总结  蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗  Web Components中自定义开关组件状态同步的常见陷阱与解决方案  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  提升Kafka消费者健壮性:会话超时处理与消息处理语义  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化  漫蛙漫画登录站点 漫蛙2正版漫画快速访问  构建轻量级网站内部消息系统:Formspree 集成指南  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分  Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  苹果手机如何防止被恶意App追踪  c++如何实现单例设计模式_c++线程安全的单例模式写法  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  高德地图公交到站提醒失败如何解决 高德提醒权限设置  不同用户不同价格! 索尼开启账户个性化定价测试  优化大型XML文件解析:基于Python流式处理的内存高效方案  Python多版本共存与虚拟环境管理深度指南  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】  在WordPress中通过REST API获取BasicAuth保护的远程文章  汽水音乐在线版入口_汽水音乐网页播放手册  12306选座怎么选到临时改签座_12306改签选座策略与步骤  Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑  抖音从哪里进入网页版_抖音官方入口链接  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  修复二维数组索引越界异常:一维循环到二维坐标的正确映射  解决Tabulator日期时间排序问题的专业指南  C++ string find函数返回值npos详解_C++字符串查找失败的判断条件  在命令行怎么运行html项目_命令行运行html项目方法【教程】  必由学登录入口 必由学官方网站在线访问链接  c++ dfs和bfs代码 c++深度广度优先搜索算法  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  抖音极速版最新版本 抖音极速版官方下载地址  QQ网页版官方账号入口 QQ网页版网页版登录指南  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】  百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案  在VS Code中配置和运行Dart程序的完整步骤  Archive of Our Own官网直达 AO3最新可用地址一览  C++如何比较两个字符串_C++ string compare函数与操作符对比  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  知音漫客官网漫画下载_知音漫客网页版阅读记录  Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。