#3分钟短文:Laravel 检查记录是否被软删除
引言
laravel模型中引入了SoftDeletes这个全局作用域用于将数据库的条目 标记为删除,而实际上并不清除数据,这样可以为后续的数据恢复做铺垫。 本文就来说一说,如何检验一个数据条目是否被软删除了。
学习时间
使用软删除功能,比较简单,只需要在模型中使用如下代码类:
|
|
如果数据库表中正好是使用 deleted_at 标记删除日期时间,那么无需手动指定该字段为软删除字段了。 如果是其他字段,需要手动指定。我们看框架源代码关于软删除部分,这里做了精简:
|
|
这里是指定软删除列为当前日期时间。接着看 getDeletedAtColumn 方法。 这里没有精简,是原始内容:
|
|
大家可以看到,如果定义了 DELETED_AT 常量,那么就用这个值,如果没有定义,就使用默认的 deleted_at。
那么好了,如果要自定义软删除字段,只用在继承类,也就是模型内编辑此常量即可:
|
|
如果要使用框架的格式化方法对该字段进行标准操作:
|
|
检查条目
上一节介绍了默认的软删除使用方法,和自定义软删除字段的方法。 使用了软删除功能后,会在模型的查询方法上,默认追加
|
|
那么如果使用了全量查询后,如何判断一个记录是否是已经软删除的呢? laravel提供了这些功能。
|
|
然后使用遍历判断是否已软删除:
|
|
或者使用另一个函数判断:
|
|
如果有 trashed 方法,则是删除的模型记录。
写在最后
本文通过对laravel模型中软删除的源码分析, 为大家展示了引入软删除功能,并自定义软删除标记字段的方法。 通过模型提供的方法,进而判断记录是否已软删除。
Happy coding :-)
我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者。