bookin
(Toh1napocht)
1
есть две таблицы, между которыми связь по айди
$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()
удаляется запись по альбому не удаляются изображения, собственно вопрос как удалить изображения связаные с альбомом?
Заранее спасибо
RusAlex
(Pletnev Rusalex)
2
реализовывать удаление в afterDelete
rudenich
(Rudenich)
3
в 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));
RusAlex
(Pletnev Rusalex)
4
UsersImage::model()->deleteAll('album_id='.$this->album_id);
помни, эта строчка удаляет записи непосредственно одним SQL запросом.
Это значит что если у тебя в UsersImage также есть что-то в afterDelete , или beforeDelete,
эти методы не выполнятся.
napeHeK
(Napehek)
5
А лучше написать триггер…
madand
(Dev Madand)
6
интересно как триггер будет удалять сами фотографии с сервера ?
лучше уж так:
protected function afterDelete() {
foreach ($this->image as $image) {
$image->delete();
}
parent::afterDelete();
}