2010-12-17 3 views
4

누구나 SoftDeletable Behavior의 대안을 알고 있습니까? 케이크 1.3.x과 호환 되나요?SoftDeletable Behavior 대신 CakePHP 1.3을 사용 하시겠습니까?

사용할 수있는 준비된 동작이없는 경우 최신 케이크에서이 작업을 수행하는 방법에 대한 제안 사항이 있습니까?


빠른 해킹을 알아 냈습니다. 무엇보다도 먼저 테이블에 tinyint (1) 부호가없는 필드가 으로 삭제 된 경우이 기본값 인 으로 삭제됩니다. 다음 함수에 응용 프로그램/app_model.php에서

, 추가

function softDelete($id) { 
    if($id && $this->hasField('deleted')) { 
     $this->id = $id; 
     return $this->saveField('deleted', 1); 
    } 

    return false; 
} 

다음 컨트롤러의 메서드에서 호출 (즉, 삭제를 수행),

$this->Model->softDelete($id); 

캐치입니다, find()을 수행 할 때마다 삭제됨! = 1 조건을 지정해야합니다.

SoftDeletable 비헤이비어와 동일한 방식으로 이것을 구현하는 방법을 여전히 시도하고 있습니다.

답변

5

저는 mariano의 동작을 1.3으로 수정했습니다. 여기보세요 - https://github.com/evilbloodydemon/cakephp-softdeletable2

+0

굉장한 친구 :) 당신의 노력에 감사드립니다. –

+0

안녕하세요, 내 프로젝트에서 코드를 보았습니다 -하지만 레코드가 열리는 대신 '삭제 된'필드를 0으로 설정되어 삭제 된 것으로 보인다. 코드가 포함되어 있어야합니다, 즉 동작 및 설정합니다. 'field'는 내 테이블의 'deleted'필드를 가리 킵니다. 컨트롤러에서 delete() 메서드를 호출하면 여전히 하드 삭제가 유지됩니다. 내가 여기서 뭔가를 놓치고 있니? –

+0

신경 쓰지 마라. 간단한 오타. $ actsAs 대신 $ actAs를 사용했습니다. –

3

또한 주목할 가치가 있습니다 : 이 CakeDC의 Utils plugin 번들로 제공됩니다.

관련 문제