Laravel 8에서 일시 삭제를 사용하는 방법

이 블로그 게시물에서는 Soft Delete가 무엇인지, 왜 laravel 애플리케이션에서 Soft Delete가 필요한지 살펴보겠습니다.

일시 삭제란 무엇이며 왜 사용합니까?
일시 삭제는 데이터베이스에서 데이터를 완전히 제거하지 않고 데이터가 삭제를 위해 레코드를 선택하거나 표시하지 못하도록 합니다.
예를 들어 실수로 데이터베이스에서 데이터를 삭제한 경우 쉽게 검색하거나 복원할 수 없으며 프로젝트 내에서 사용된 경우 문제가 발생할 수 있습니다. 이를 방지하기 위해 laravel은 소프트 삭제 기능을 활성화하는 특성Illuminate\Database\Eloquent\SoftDeletes을 지원합니다. 이는 Eloquent 모델에 Soft delete를 추가할 수 있음을 의미합니다.

사용 방법을 살펴보겠습니다.

먼저 어떤 모델을 설정해야 하는지 결정하고 이 use SoftDeletes 특성을 가진 모델에 Illuminate\Database\Eloquent\SoftDeletes를 추가해야 합니다. 이 특성은 자동으로 deleted_at 속성 DateTime/Carbon 인스턴스를 캐스팅합니다.

예를 들어 하드 삭제 대신 사용자를 삭제하는 기능이 있으므로 이제 사용자 모델에서 소프트 삭제를 사용합니다.

아래 코드를 사용하여 애플리케이션에 추가하십시오.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model
{
    use SoftDeletes;
}


우리가 그것을 사용할 때, 그것은 deleted_at 속성을 설정할 뿐만 아니라 데이터베이스에 deleted_at 필드/열을 추가할 수 있습니다. 그 laravel 스키마 빌더는 아래와 같이 도우미 메서드를 제공했습니다.

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

Schema::table('flights', function (Blueprint $table) {
    $table->softDeletes();
});

Schema::table('flights', function (Blueprint $table) {
    $table->dropSoftDeletes();
});


데이터를 삭제하면 deleted_at 필드에 현재 날짜 n 시간이 추가됩니다. 사용자 목록을 가져올 때 일시 삭제된 사용자는 모든 쿼리 결과에서 자동으로 제외됩니다.

일시 삭제된 데이터를 보려면 일시 삭제에서 제공하는 trashed() 메서드를 사용하여 가져올 수 있습니다.

   $user->trashed()


  • 일시 삭제 데이터를 복원하는 방법도 제공합니다restore().

  •    $user->restore();
    


  • 이 방법은 다중/대량 데이터를 복원하는 쿼리에서도 사용됩니다.

  •  User::withTrashed()
            ->restore();
    


  • 일시 삭제된 데이터가 있는 레코드를 가져오려는 경우 이를 사용할 수 있습니다withTrashed().

  • User::withTrashed()->get();
    


  • 데이터를 영구적으로 삭제하려는 경우 다음을 사용하여 강제로 삭제할 수 있습니다.

  • $user->forceDelete();
    


  • 사용자로부터 일시 삭제된 데이터만 가져오려는 경우 onlyTrashed() 메서드를 사용하여 검색할 수 있습니다.

  • User::onlyTrashed()->get();
    


    일시 삭제에서 제공하는 여러 방법을 보았습니다. 그것은 우리가 그것들의 도움으로 데이터를 가져오고 복원할 수 있다는 것을 의미합니다.

    읽어 주셔서 감사합니다. 🦄 🦄 🦁

    좋은 웹페이지 즐겨찾기