удаление записей связаных таблиц

есть две таблицы, между которыми связь по айди

$image

и

$album

в relations указано

public function relations()

{


	return array(


		'image'=>array(self::HAS_MANY, 'UsersImage', '', 'on'=>'t.album_id=image.album_id'),


	);


}

собственно вытягиваю данные по альбому и изображениям в нем

$album=UsersAlbum::model()->with(‘image’)->find(‘t.album_id=’.$_POST[‘album_id’].’ AND t.user_id=’.Yii::app()->user->id);

а затем удаляю

$album->delete()

удаляется запись по альбому не удаляются изображения, собственно вопрос как удалить изображения связаные с альбомом?

Заранее спасибо

реализовывать удаление в afterDelete

в UsersAlbum




protected function afterDelete()

	{

		parent::afterDelete();

		UsersImage::model()->deleteAll('album_id='.$this->album_id);

	}



  • при поиске можно без with()



$album=UsersAlbum::model()->findByAttributes(array('album_id'=>$_POST['album_id'],'user_id'=>Yii::app()->user->id));




UsersImage::model()->deleteAll('album_id='.$this->album_id);

помни, эта строчка удаляет записи непосредственно одним SQL запросом.

Это значит что если у тебя в UsersImage также есть что-то в afterDelete , или beforeDelete,

эти методы не выполнятся.

А лучше написать триггер…

интересно как триггер будет удалять сами фотографии с сервера ?

лучше уж так:




protected function afterDelete() {

  foreach ($this->image as $image) {

	$image->delete();

  }

  

  parent::afterDelete();

}