PHP Laravel软删除的实现方法介绍

吾爱主题 阅读:169 2022-11-16 16:40:00 评论:0

用Laravel 自带的 Eloquent ORM 来实现软删除。

首先在数据迁移文件中添加删除时间字段

./database/migrations/2014_10_12_000000_create_users_table.php

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <?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

?
1 2 3 4 5 6 7 8 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model {      use SoftDeletes; // 开启软删除      protected $guarded = []; // 不可以注入的字段数据,使用create方法才有效 }

软删除方法

直接调用delete()方法或者destroy()方法即可

?
1 User::destroy( $id );

这时候查询的数据自动添加过滤条件 deleted_at = NULL

恢复删除

?
1 User::onlyTrashed()->where( 'id' , $id )->restore();

永久删除

直接删除数据

?
1 User::forceDeleted( $id );

查询包含已删除的数据

使用 withTrashed()可以查询出包含已删除的数据

?
1 User::withTrashed()->get();

只查询已删除的数据

使用 onlyTrashed()可以只查询出已删除的数据

?
1 User::onlyTrashed()->get();

到此这篇关于PHP Laravel软删除的实现方法介绍的文章就介绍到这了,更多相关PHP Laravel软删除内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://peakxin.blog.csdn.net/article/details/124478318

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容