软删除就是逻辑删除,数据保留单标记上删除状态,一般我们会用删除时间来作为标记,这样标记状态有了,删除时间也有了
用Laravel 自带的 Eloquent ORM 来实现软删除。
首先在数据迁移文件中添加删除时间字段
./database/migrations/2014_10_12_000000_create_users_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->softDeletes()->comment('删除时间');// 默认添加 deleted_at 字段
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
};执行 php artisan migrate 运行迁移文件
修改对应的数据模型
./app/Models/User.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use SoftDeletes;// 开启软删除
protected $guarded = [];// 不可以注入的字段数据,使用create方法才有效
}软删除方法
直接调用delete()方法或者destroy()方法即可
User::destroy($id);这时候查询的数据自动添加过滤条件 deleted_at = NULL
恢复删除
User::onlyTrashed()->where('id', $id)->restore();永久删除
直接删除数据
User::forceDeleted($id);查询包含已删除的数据
使用 withTrashed()可以查询出包含已删除的数据
User::withTrashed()->get();只查询已删除的数据
使用 onlyTrashed()可以只查询出已删除的数据
User::onlyTrashed()->get();到此这篇关于PHP Laravel软删除的实现方法介绍的文章就介绍到这了,更多相关PHP Laravel软删除内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
编程基础网
本文标题为:PHP Laravel软删除的实现方法介绍
基础教程推荐
猜你喜欢
- PHP中的输出缓冲控制详解 2023-06-03
- PHP设计模式之状态模式定义与用法详解 2022-10-12
- 解析PHP中Exception异常机制 2023-06-13
- php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次) 2023-04-24
- PHP树形结构tree类用法示例 2022-12-15
- PHP如何将头像图片转换圆形图片 2023-08-30
- php fread函数使用方法总结 2023-01-19
- 在laravel中实现事务回滚的方法 2023-02-22
- PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案 2022-11-26
- CentOS 7 编译安装PHP7 2023-09-02
