PHPLaravel软删除的实现方法介绍
短信预约 -IT技能 免费直播动态提醒
用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
{
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 字段
});
}
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软删除内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341