广告
返回顶部
首页 > 资讯 > 精选 >laravel中软删除的实例分析
  • 242
分享到

laravel中软删除的实例分析

2023-06-29 06:06:57 242人浏览 泡泡鱼
摘要

这篇文章主要介绍“laravel中软删除的实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“laravel中软删除的实例分析”文章能帮助大家解决问题。在laravel中,软删除指的是数据表记录并

这篇文章主要介绍“laravel中软删除的实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“laravel中软删除的实例分析”文章能帮助大家解决问题。

在laravel中,软删除指的是数据表记录并未真的从数据库中删除,而是将表记录的表示状态标记为软删除,这样在查询时就可以进行过滤,让对应表记录看上去像是被“删除”了。

本文操作环境:windows10系统、Laravel6版、Dell G3电脑。

laravel中软删除的原理是什么

1、删除模型

1.1 使用delete删除模型

删除模型很简单,先获取要删除的模型实例,然后调用delete方法即可:

$post = Post::find(5);if($post->delete()){    echo '删除文章成功!';}else{    echo '删除文章失败!';}

该方法返回truefalse

1.2 使用destroy删除模型

当然如果已知要删除的模型id的话,可以用更简单的方法destroy直接删除:

$deleted = Post::destroy(5);

你也可以一次传入多个模型id删除多个模型:

$deleted = Post::destroy([1,2,3,4,5]);

调用destroy方法返回被删除的记录数。

1.3 使用查询构建器删除模型

既然前面提到Eloquent模型本身就是查询构建器,也可以使用查询构建器风格删除模型,比如我们要删除所有浏览数为0的文章,可以使用如下方式:

$deleted = Models\Post::where('views', 0)->delete();

返回结果为被删除的文章数。

2、软删除及其相关实现

2.1 软删除实现

上述删除方法都会将数据表记录从数据库删除,此外Eloquent模型还支持软删除。

所谓软删除指的是数据表记录并未真的从数据库删除,而是将表记录的标识状态标记为软删除,这样在查询的时候就可以加以过滤,让对应表记录看上去是被”删除“了。Laravel中使用了一个日期字段作为标识状态,这个日期字段可以自定义,这里我们使用deleted_at,如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空。

要让Eloquent模型支持软删除,还要做一些设置。首先在模型类中要使用SoftDeletestrait,该trait为软删除提供一系列相关方法,具体可参考源码Illuminate\Database\Eloquent\SoftDeletes,此外还要设置$date属性数组,将deleted_at置于其中:

<?PHPnamespace App\Models;use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Eloquent\SoftDeletes;class Post extends Model{    use SoftDeletes;    //设置表名    public $table = 'posts';    //设置主键    public $primaryKey = 'id';    //设置日期时间格式    public $dateFORMat = 'U';    protected $guarded = ['id','views','user_id','updated_at','created_at'];    protected $dates = ['delete_at'];}

然后对应的数据库posts中添加deleted_at列,我们使用迁移来实现,先执行Artisan命令:

php artisan make:migration alter_posts_deleted_at --table=posts

然后编辑生成的PHP文件如下:

<?phpuse Illuminate\Database\Schema\Blueprint;use Illuminate\Database\Migrations\Migration;class AlterPostsDeletedAt extends Migration{        public function up()    {        Schema::table('posts', function (Blueprint $table) {            $table->softDeletes();        });    }    ...//其它方法}

然后运行:

php artisan migrate

这样posts中就有了deleted_at列。接下来,我们在控制器中编写测试代码:

$post = Post::find(6);$post->delete();if($post->trashed()){    echo '软删除成功!';    dd($post);}else{    echo '软删除失败!';}

在浏览器中访问Http://laravel.app:8000/test

当我们再次通过下面这段代码获取所有文章:

$posts = Post::all();dd($posts);

已经看不到id为6的文章的身影了。

2.2 查询结果包含软删除模型

那如果想要在查询结果中包含软删除的记录呢?可以使用SoftDeletes trait上的withTrashed方法:

$posts = Post::withTrashed()->get();dd($posts);

id为6的文章又出现在了查询结果中。有时候我们只想要查看被软删除的模型,这也有招,通过SoftDeletes上的onlyTrashed方法即可:

$posts = Post::onlyTrashed()->get();dd($posts);

2.3 软删除恢复

有时候我们需要恢复被软删除的模型,可以使用SoftDeletes提供的restore方法:

恢复单个模型

$post = Post::find(6);$post->restore();

恢复多个模型

Post::withTrashed()->where('id','>',1)->restore();

恢复所有模型

Post::withTrashed()->restore();

恢复关联查询模型

$post = Post::find(6);$post->history()->restore();

2.4 强制删除

如果模型配置了软删除但我们确实要删除改模型对应数据库表记录,则可以使用SoftDeletes提供的forceDelete方法:

$post = Post::find(6);$post->forceDelete();

关于“laravel中软删除的实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: laravel中软删除的实例分析

本文链接: https://www.lsjlt.com/news/323195.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • laravel中软删除的实例分析
    这篇文章主要介绍“laravel中软删除的实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“laravel中软删除的实例分析”文章能帮助大家解决问题。在laravel中,软删除指的是数据表记录并...
    99+
    2023-06-29
  • Linux中删除软连接的示例分析
    小编今天带大家了解Linux中删除软连接的示例分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux中删除软连接的示例分析”的...
    99+
    2023-06-28
  • Bootstrap中Table删除和批量删除的示例分析
    这篇文章主要介绍Bootstrap中Table删除和批量删除的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一条记录可以看做一条数据的数组1   ...
    99+
    2022-10-19
  • CRM Opportunity的删除问题实例分析
    这篇文章主要介绍“CRM Opportunity的删除问题实例分析”,在日常操作中,相信很多人在CRM Opportunity的删除问题实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CRM Oppor...
    99+
    2023-06-04
  • LINQ to SQL删除实现的示例分析
    LINQ to SQL删除实现的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在实现LINQ to SQL删除时可以使用Lambda Expression批量删除数...
    99+
    2023-06-17
  • git中删除分支和回滚的示例分析
    小编给大家分享一下git中删除分支和回滚的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!git 删除分支和回滚的实例详解【git 删除本地分支】git&n...
    99+
    2023-06-09
  • laravel的核心实例分析
    本文小编为大家详细介绍“laravel的核心实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“laravel的核心实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。laravel的核心是服务容器,也就是...
    99+
    2023-06-29
  • Golang中slice删除元素的性能实例对比分析
    本篇内容主要讲解“Golang中slice删除元素的性能实例对比分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang中slice删除元素的性能实例对比分析”吧!我的电脑配置:☁ &nb...
    99+
    2023-07-02
  • AngularJS路由删除#符号的示例分析
    这篇文章主要介绍了AngularJS路由删除#符号的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近做一个web应用,有个需求需要...
    99+
    2022-10-19
  • Laravel的生命周期实例分析
    本篇内容主要讲解“Laravel的生命周期实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel的生命周期实例分析”吧!Laravel的生命周期 A世间万物皆有生命周期,当我们使用...
    99+
    2023-06-30
  • php中rtrim()函数删除字符的示例分析
    这篇文章将为大家详细讲解有关php中rtrim()函数删除字符的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、概念rtrim()函数移除字符串右侧的空白字符或其他预定义字符...
    99+
    2023-06-15
  • Laravel中的事件溯源实例代码分析
    这篇文章主要介绍了Laravel中的事件溯源实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Laravel中的事件溯源实例代码分析文章都会有所收获,下面我们一起来看看吧。我们将新建一个 Laravel...
    99+
    2023-07-04
  • laravel中csrf验证的示例分析
    这篇文章主要介绍laravel中csrf验证的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!laravel csrf验证总结前言问题:laravel 在web路由下无论是表单提交啊 还是ajax请求啊 只要是...
    99+
    2023-06-14
  • Laravel中$this->app的示例分析
    这篇文章主要介绍了Laravel中$this->app的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。断点调试寻找对应文件,忽略次要步骤,仅描述核心动作,‘/’...
    99+
    2023-06-20
  • php中laravel框架的示例分析
    这篇文章主要介绍了php中laravel框架的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。laravel的安装首先安装laravel之前要安装composer,如果...
    99+
    2023-06-15
  • NodeJs中fs读写删除移动监听的示例分析
    小编给大家分享一下NodeJs中fs读写删除移动监听的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!NodeJs版本:4...
    99+
    2022-10-19
  • 大量删除导致MySQL慢查的示例分析
    这篇文章将为大家详细讲解有关大量删除导致MySQL慢查的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、背景监控上收到了大量慢查的告警,业务也反馈查询很慢,随即...
    99+
    2022-10-18
  • Laravel应用中模拟用户实例分析
    今天小编给大家分享一下Laravel应用中模拟用户实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Laravel No...
    99+
    2023-07-05
  • Laravel中加密解密与哈希实例的分析
    这篇文章给大家分享的是有关Laravel中加密解密与哈希实例的分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、加密解密当你的应用程序中需要用到加密和解密的地方时可以使用Laravel自带的加密解密工具。La...
    99+
    2023-06-14
  • Redis中Cluster字段模糊匹配及删除的示例分析
    小编给大家分享一下Redis中Cluster字段模糊匹配及删除的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Questions在数据库内我们可以通过like关键字、%、*或者REGEX关键字进行模糊匹配。而在Re...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作