Laravel 5.1 프레임 워 크 모델 소프트 삭제 작업 사례 분석

본 논문 의 사례 는 Laravel 5.1 프레임 워 크 모델 의 소프트 삭제 작업 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
소프트 삭 제 는 비교적 실 용적 인 삭제 수단 이다.예 를 들 어 당신 은 장부 에 기록 이 있다 고 생각 하지 않 는 다.삭 제 된 지 며칠 이 지나 면 삭제 하지 말 아야 한 다 는 것 을 알 게 되 었 다.이때 소프트 삭제 의 목적 은 이미 삭 제 된 데 이 터 를 찾 아 조작 할 수 있 고 복원 할 수도 있 고 진정한 삭제 일 수도 있다.
1 일반 삭제
소프트 삭제 하기 전에 일반적인 삭제 방법 을 살 펴 보 자.
1.1 메 인 키 로 직접 삭제

  public function getDelete()
  {
    Article::destroy(1);
    Article::destroy([1,2,3]);
  }

1.2 model 가 져 오기 후 삭제

  public function getDelete()
  {
    $article = Article::find(3);
    $article->delete();
  }

1.3 일괄 삭제

  public function getDelete()
  {
    //               
    $deleteRows = Article::where('id','>',3)->delete();
    dd($deleteRows);  // 2
  }

2 소프트 삭제
2.1 준비 작업
만약 당신 이 소프트 삭 제 를 실현 하려 면 세 가지 일 을 미리 해 야 합 니 다.
deleted 추가at 모델 의$date 속성 에..모델 에 Illuminate\Database\Eloquent\SoftDeletes 라 는 trait 를 사용 합 니 다데이터 시트 에 deleted 가 있 음 을 보증 합 니 다.at 열 이 없 으 면 이 열 을 추가 합 니 다우선 우 리 는 첫 번 째 단계 와 두 번 째 단 계 를 한다.

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Article extends Model
{
  //   SoftDeletes  trait
  use SoftDeletes;
  //    
  protected $fillable = ['title', 'body'];
  // dates
  protected $dates = ['deleted_at'];
}

그리고 우 리 는 이전 파일 을 만들어 deleted 를 추가 합 니 다.at 열 에서 데이터 시트 까지:

class InsertDeleteAtIntroArticles extends Migration
{
  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::table('articles', function (Blueprint $table) {
      $table->softDeletes();
    });
  }
  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down()
  {
    Schema::table('articles', function (Blueprint $table) {
      $table->dropSoftDeletes();
    });
  }
}

2.2 소프트 삭제 실현
이제 우 리 는 데 이 터 를 삭제 해 볼 수 있다.

  public function getDelete()
  {
    $article = Article::first();
    $article->delete();
  }

↑우리 가 이 데 이 터 를 삭제 한 후에 데이터 시트 에서 deleted 라 고 표시 했다.at 비 어 있 지 않 습 니 다.시간 값 입 니 다.deleteat 가 비어 있 지 않 을 때 이 데이터 가 부 드 럽 게 삭제 되 었 음 을 증명 합 니 다.
2.3 데이터 가 부 드 럽 게 삭제 되 었 는 지 판단

    if ($article->trashed()){
      echo '           ';
    }

2.4 소프트 삭 제 된 데이터 조회
한 가지 주의해 야 할 것 은 데이터 가 부 드 럽 게 삭 제 된 후에 자동 으로 조회 데이터 에서 제 외 됩 니 다.즉,일반적인 조회 문 에 의 해 조회 되 지 않 습 니 다.소프트 삭제 데 이 터 를 조회 하려 면 withTrashed 방법 을 사용 할 수 있 습 니 다.

  public function getIndex()
  {
    $article = Article::withTrashed()->first();
    if ($article->trashed()){
      echo '     ';  //          
    }
  }

우 리 는 또한 only Trashed 를 사용 할 수 있 습 니 다.그것 과 withTrashed 의 차 이 는 부 드 럽 게 삭 제 된 데이터 만 얻 는 것 입 니 다.

  public function getIndex()
  {
    $articles = Article::onlyTrashed()->where('id','<','10')->get()->toArray();
    dd($articles);
  }

2.5 소프트 삭 제 된 데이터 복구

  public function getIndex()
  {
    $article = Article::withTrashed()->find(6);
    $article->restore();
  }

2.6 데이터 영구 삭제

  public function getIndex()
  {
    $article = Article::withTrashed()->find(6);
    $article->forceDelete();
  }

Laravel 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 는 Laravel 프레임 워 크 를 바탕 으로 하 는 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기