티스토리 뷰


라라벨 4.2 이상부터 소프트 삭제와 관련하여 약간의 변화가 있습니다. 이전 버전의 경우 클래스 내에 멤버변수로 다음과 같이 선언하여 사용하였다면,


protected $softDelete = true;


4.2 이후 버전부터는 아래와 같이 선언하여 사용합니다.


use Illuminate\Database\Eloquent\SoftDeletingTrait;


class User extends \Eloquent {


use SoftDeletingTrait;



(추가) 5.0 이후 버전부터는 아래와 같이 선언하여 사용합니다.


use Illuminate\Database\Eloquent\SoftDeletes;


class User extends \Eloquent {


use SoftDeletes;


이후, 엘로퀀트 모델에서 delete() 메소드를 호출하여도 실제 삭제되지 않고 deleted_at 에 관련 정보가 추가됩니다. 참~ 마이그레이션으로 테이블 생성시, 아래의 항목을 추가합니다.


$table->softDeletes();


기타 사용 예제는 다음과 같습니다.


$users = User::withTrashed()->where('account_id', 1)->get(); // 소프트 삭제된 레코드도 검색


$user->posts()->withTrashed()->get(); // 소프트 삭제된 레코드도 검색


$users = User::onlyTrashed()->where('account_id', 1)->get(); // 소프트 삭제된 레코드만을 검색


$user->restore(); // 소프트 삭제된 레코드를 복원


User::withTrashed()->where('account_id', 1)->restore(); // 소프트 삭제된 레코드를 복원


$user->posts()->restore(); // 소프트 삭제된 레코드를 복원


$user->forceDelete(); // 진짜 삭제


$user->posts()->forceDelete(); // 진짜 삭제


if ($user->trashed()) // 모델의 인스턴스가 삭제된 항목인지 검사

{

    //

}



댓글
댓글쓰기 폼