3分钟短文:Laravel 检查记录是否被软删除
时间:2022-07-24
本文章向大家介绍3分钟短文:Laravel 检查记录是否被软删除,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
引言
laravel模型中引入了SoftDeletes这个全局作用域用于将数据库的条目 标记为删除,而实际上并不清除数据,这样可以为后续的数据恢复做铺垫。本文就来说一说,如何检验一个数据条目是否被软删除了。
学习时间
使用软删除功能,比较简单,只需要在模型中使用如下代码类:
use IlluminateDatabaseEloquentSoftDeletes;
class User extends Model
{
use SoftDeletes;
}
如果数据库表中正好是使用 deleted_at 标记删除日期时间,那么无需手动指定该字段为软删除字段了。如果是其他字段,需要手动指定。我们看框架源代码关于软删除部分,这里做了精简:
protected function runSoftDelete()
{
$this->{$this->getDeletedAtColumn()} = $time;
}
这里是指定软删除列为当前日期时间。接着看 getDeletedAtColumn 方法。这里没有精简,是原始内容:
public function getDeletedAtColumn()
{
return defined('static::DELETED_AT') ? static::DELETED_AT : 'deleted_at';
}
大家可以看到,如果定义了 DELETED_AT 常量,那么就用这个值,如果没有定义,就使用默认的 deleted_at。
那么好了,如果要自定义软删除字段,只用在继承类,也就是模型内编辑此常量即可:
class User extends Model
{
use SoftDeletes;
const DELETED_AT = 'my_deleted_at';
}
如果要使用框架的格式化方法对该字段进行标准操作:
protected $dates = ['my_deleted_at'];
检查条目
上一节介绍了默认的软删除使用方法,和自定义软删除字段的方法。使用了软删除功能后,会在模型的查询方法上,默认追加
where deleted_at is null
那么如果使用了全量查询后,如何判断一个记录是否是已经软删除的呢?laravel提供了这些功能。
$users = User::withTrashed()->where('active', 1)->get();
然后使用遍历判断是否已软删除:
foreach($user as $user)
{
if ($user->trashed()) {
continue;
}
}
或者使用另一个函数判断:
method_exists($user, 'trashed')
如果有 trashed 方法,则是删除的模型记录。
写在最后
本文通过对laravel模型中软删除的源码分析, 为大家展示了引入软删除功能,并自定义软删除标记字段的方法。通过模型提供的方法,进而判断记录是否已软删除。
- 微信与支付宝回应央行新规:认同央行规范!
- Gulp 工作流中Sass 增量编译功能的探索
- Sass与Compass——回顾
- 苹果就“降速门”致歉;央行批扫码支付不正当竞争;王健林旗下公司遭集体裁员
- 姚期智教授:量子计算是千亿万亿级别的产业,或成为科技创新的引擎
- Powershell中禁止执行脚本解决办法
- 使用AsyncTask异步更新UI界面及原理分析
- 商家为何要做小程序?
- Android中关于dip和px以及转换的总结
- Python介绍
- python案例-用户登录
- 推荐个找代码示例的VS 插件 All-In-One Code Framework Sample Browser
- 明星推出定制AI形象,虚拟形象有何优势
- apache工作模式梳理
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Android API编程之Assets文件操作示例
- Android自制精彩弹幕效果
- RollViewPager无限轮播使用方法详解
- ubuntu16.04 升级内核的方法步骤
- Android 列表倒计时的实现的示例代码(CountDownTimer)
- Android 控件设置阴影效果
- 解决VScode配置远程调试Linux程序的问题
- Android EasyBarrage实现轻量级弹幕效果
- android 获取本机其他app的版本信息的示例代码
- android相册选择图片的编码实现代码
- ClickHouse和他的朋友们(2)MySQL Protocol和Read调用栈
- Android图片三级缓存的原理及其实现
- Android TextView实现带链接文字事件监听的三种常用方式示例
- Android ViewDragHelper使用介绍
- Android语音声波控件 Android条形波控件