> PHP 프레임워크 > Laravel > laravel 일시 삭제 필드가 다른 것으로 변경되었습니다.

laravel 일시 삭제 필드가 다른 것으로 변경되었습니다.

WBOY
풀어 주다: 2023-05-20 19:58:36
원래의
716명이 탐색했습니다.

Laravel은 개발자가 효율적이고 확장 가능하며 유지 관리하기 쉬운 웹 애플리케이션을 개발하는 데 도움이 되는 다양한 강력한 기능과 사용하기 쉬운 도구를 제공하는 인기 있는 PHP 프레임워크입니다. Laravel의 일시 삭제 기능은 개발자가 데이터베이스의 무결성을 파괴하지 않고 데이터베이스의 데이터를 쉽게 삭제할 수 있도록 하는 매우 유용한 기능입니다. 그러나 때로는 개발자가 특정 요구 사항에 맞게 Laravel 일시 삭제 필드를 다른 이름으로 변경해야 할 수도 있습니다. 이번 글에서는 Laravel 일시 삭제 필드를 다른 이름으로 변경하는 방법을 소개합니다.

Laravel 소프트 삭제

Laravel에서는 실제로 데이터베이스에서 데이터를 삭제하는 대신 데이터를 "삭제됨"으로 표시하여 소프트 삭제를 구현합니다. 일시 삭제된 데이터가 데이터베이스에 여전히 존재하지만 "삭제됨"으로 표시되어 쿼리 결과에 표시되지 않기 때문에 일시 삭제 기능은 데이터베이스의 무결성을 파괴하지 않습니다. Laravel 소프트 삭제는 주로 다음 두 단계로 구성됩니다.

  1. 모델에 SoftDeletes 기능 추가

Laravel의 소프트 삭제 기능을 사용하려면 소프트 삭제하려는 모델에 SoftDeletes 기능을 추가해야 합니다. Laravel의 모델은 추가 기능을 추가하기 위해 특성을 사용합니다. SoftDeletes 특성은 Laravel에서 제공하는 특성입니다.

use IlluminateDatabaseEloquentModels;
use IlluminateDatabaseEloquentSoftDeletes;

class Example extends Model{
    use SoftDeletes;

    protected $dates = ['deleted_at'];

    //...
}
로그인 후 복사

위 코드에서 use SoftDeletes 문은 Laravel에서 제공하는 SoftDeletes 기능을 사용하겠다는 의미입니다. 동시에 $dates 속성을 사용하여 삭제 시간을 식별하는 데 사용되는 소프트 삭제 타임스탬프 필드의 이름을 정의해야 합니다. 기본 일시 삭제 타임스탬프 필드는 "deleted_at"이지만 다른 이름을 사용할 수 있습니다.

  1. 모델에 일시 삭제를 지시합니다.

Laravel의 SoftDeletes 기능은 삭제를 수행할 때 실제로 데이터를 삭제하지는 않지만 데이터를 "삭제됨"으로 표시하는 삭제 메소드를 제공합니다. 예:

$example = Example::find(1);
$example->delete();
로그인 후 복사
로그인 후 복사

위 코드는 ID 1의 데이터를 "삭제됨"으로 표시하지만 데이터베이스에서 삭제하지는 않습니다.

일시 삭제된 데이터를 쿼리하려면 withTrashed 메서드를 사용하여 일시 삭제된 데이터를 포함한 모든 데이터를 검색하거나, onlyTrashed 메서드를 사용하여 삭제된 데이터만 검색할 수 있습니다. 예:

// 查询包括软删除数据在内的所有数据
$examples = Example::withTrashed()->get();

// 查询删除的数据
$deletedExamples = Example::onlyTrashed()->get();
로그인 후 복사

위 코드는 일시 삭제된 데이터와 삭제된 데이터를 각각 쿼리하는 데 사용할 수 있습니다.

Laravel 일시 삭제된 필드를 다른 이름으로 변경

기본적으로 Laravel은 삭제 타임스탬프 필드를 식별하기 위해 "deleted_at" 필드를 사용하므로 일시 삭제된 데이터를 쿼리할 때 매우 편리합니다.

그러나 경우에 따라 개발자는 타임스탬프 필드 제거를 나타내기 위해 다른 속성을 사용해야 할 수도 있습니다. Laravel에서 일시 삭제된 필드의 이름을 변경해야 하는 경우 모델에서 deleteAt 메소드를 정의할 수 있습니다. 예:

use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentSoftDeletes;

class Example extends Model{
    use SoftDeletes;

    protected $dates = ['my_deleted_at'];

    public function getDeletedAtColumn()
    {
        return 'my_deleted_at';
    }

    // ...
}
로그인 후 복사

위 코드에서는 $dates 속성의 "deleted_at"를 "my_deleted_at"로 변경하고 getDeletedAtColumn 메서드를 사용하여 Laravel 소프트 삭제 필드를 "my_deleted_at"로 변경했습니다.

다음을 사용하여 소프트 삭제를 수행할 수 있습니다:

$example = Example::find(1);
$example->delete();
로그인 후 복사
로그인 후 복사

Laravel은 기본 delete_at 필드 대신 my_deleted_at 필드를 사용하여 데이터를 삭제된 것으로 표시합니다. 쿼리 시 withTrashed 및 onlyTrashed 메서드를 사용하여 삭제된 데이터를 검색할 수 있습니다.

요약

Laravel에서 일시 삭제를 사용하면 실제로 데이터를 삭제하지 않고도 데이터를 "삭제됨"으로 쉽게 표시할 수 있습니다. Laravel의 SoftDeletes 기능은 소프트 삭제를 수행하는 쉬운 방법을 제공합니다. 기본적으로 Laravel은 삭제 타임스탬프 필드를 식별하기 위해 "deleted_at" 필드를 사용합니다. 그러나 개발자는 getDeletedAtColumn 메소드를 사용하여 해당 필드를 다른 이름으로 변경할 수 있습니다. 솔루션에 관계없이 소프트 삭제는 Laravel의 매우 강력하고 실용적인 기능입니다.

위 내용은 laravel 일시 삭제 필드가 다른 것으로 변경되었습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿