Laravel에서 다른 동일 로그 테이블에서 소프트 삭제 된 항목을 가질 수 있습니까? 다른 테이블에있는 모든 소프트 삭제 파일.Laravel - 소프트 삭제 - 다른 테이블로 게시물 이동
얼마 전 로그 테이블 이벤트 스케줄러 (http://dev.mysql.com/doc/refman/5.6/en/events-overview.html)를 사용하여 모든 데이터를 삭제하려고합니다.
Laravel에서 다른 동일 로그 테이블에서 소프트 삭제 된 항목을 가질 수 있습니까? 다른 테이블에있는 모든 소프트 삭제 파일.Laravel - 소프트 삭제 - 다른 테이블로 게시물 이동
얼마 전 로그 테이블 이벤트 스케줄러 (http://dev.mysql.com/doc/refman/5.6/en/events-overview.html)를 사용하여 모든 데이터를 삭제하려고합니다.
몇 가지 방법으로이를 수행 할 수 있습니다. 당신이 실제로 원하는 경우
MyModel::deleting(function($model) {
DeletedItems::create([
// Your model fields here
]);
});
- 또는
: 다른 테이블에 삭제 된 항목을 삽입 할 경우이 작업이 삭제 이벤트에 대한 발생 할 모델에 model listener 등록 그들이 부드러운 삭제 된 이후 일정 기간 후에 데이터베이스 밖으로 항목을 삭제 나는 Scheduled Task을 사용하는 것이 좋습니다. 소프트 삭제는 시간 스탬프를 제공하므로 작업에서 참조 할 수 있습니다.
예를 들어, 다음은 소프트 한 달 이상 삭제 된 모든 모델을 제거합니다 :
protected function schedule(Schedule $schedule)
{
$schedule->call(function() {
MyModel::withTrashed()
->whereDate('deleted_at', '<', Carbon::today()->subMonth())
->forceDelete();
})->daily();
}
Laravel은 상자에서이 작업을 수행 할 수 있지만, 쓰기는 열심히하지 않을 수
두 번째 솔루션은 정말 좋은 것처럼 보이지만 일부 데이터베이스에서는 다른 데이터베이스로 옮길 수도 있습니다. 처음부터 삭제하고 데이터를 통계 페이지에 넣기 만하면됩니다. 첫 번째 솔루션은 로깅에 좋다고 생각합니다. – Maximi
왜 둘 다하지 않습니까? 모델 관찰자 대신 작업에서 삭제하려는 레코드를 다른 테이블에 먼저 삽입 한 다음 삭제할 논리를 만듭니다. –
당신 자신. – Jerodev