이미 말씀 드렸듯이 saveAll 및 deleteAll은 기본적으로 save()
및 delete()
주위의 래퍼입니다. 따라서 데이터 행마다 저장 또는 삭제가 beforeSave()
및 beforeDelete()
이됩니다. 따라서 별도의 beforeSaveAll과 beforeDeleteAll을 추가하는 것은 실제로 필요하지 않습니다. 예, 많은 쿼리를 실행할 수 있지만 문제는 아닙니다. 하나의 대량 작업을 수행하는 것보다 저장되거나 삭제되는 모든 데이터 행을 몰드 할 수있는 방법을 제공합니다 (하나의 작업으로 묶을 때 서로 의존하기 때문에).
당신은 마다 시려면 및 deleteAll 행동 (즉, 당신이 실제로 원하는 것을 매우 확인을 사용자 정의 로직을 추가! 그리고 당신은 콜백에서 해제하지 않는 한 정기를 BeforeSave와 beforeDelete 여전히 호출 될 것을 기억하고 싶을 경우 각 saveAll 및 deleteAll)을 사용하면 자신의 implent가있는 메소드를 AppModel
에 겹쳐 쓰고 다음과 같이 사용자 정의 "이전"로직을 호출 할 수 있습니다.
// Add your own custom deleteAll and saveAll to AppModel
public function deleteAll($conditions, $cascade = true, $callbacks = false) {
if ($this->beforeDeleteAll($conditions)) {
parent::deleteAll($conditions, $cascade, $callbacks);
} else {
return false;
}
}
public function saveAll($data = array(), $options = array()) {
if ($this->beforeSaveAll($data, $options)) {
parent::saveAll($data, $options);
} else {
return false;
}
}
// As well as your custom logic
public function beforeDeleteAll($conditions) {
// Do your stuff here
return true;
}
public function beforeSaveAll($data, $options) {
// Do your stuff here
return true;
}