어쩌면 그것은 내 자신의 모델의 삭제 방법으로 기본 캐스케이드 삭제 방법을 덮어 쓸 수 있지만 그것은 내 프로젝트에 대한 해결 방법을 만들었으므로 많은 일을합니다.
'zadania'테이블과 'zadania_images'테이블이 있습니다. 두 번째 테이블에는 두 테이블을 관련시키는 'zadanie_id'컬럼이있다.
'zadanie_images'행에 파일 이름이 포함되어 있고 'zadanie_id'상위 항목의 하위 항목 삭제 후 파일이 계속 남아 있습니다.
'Zadanie'모델 :
public function deleteZadanie($id) {
$row = $this->find($id)->current();
if($row) {
$image = new Model_ZadanieImage();
$image->deleteRelatedFiles($id);
$row->delete();
}
}
'ZadanieImage'모델 :
public function deleteImage($id) {
$row = $this->find($id)->current();
if($row) {
//delete the record
$filename = $row['name'];
$row->delete();
//and delete related files
unlink('images/zadanie/' . $filename);
unlink('images/zadanie/thumbs/' . $filename);
}
}
public function deleteRelatedFiles($zadanie_id) {
$select = $this->select()->where('zadanie=?', $zadanie_id);
$images = $this->fetchAll($select);
foreach($images as $image) {
$this->deleteImage($image->id);
}
}
여기 내 솔루션입니다