hd.*_*hd. 3 php relationship yii
我有这两种模式的关系(照片,专辑).在项目模型中:
'photo' => array(self::HAS_MANY, 'photo', 'album_id')
Run Code Online (Sandbox Code Playgroud)
在照片模型中:
'album' => array(self::BELONGS_TO, 'Album', 'album_id'),
Run Code Online (Sandbox Code Playgroud)
在albumController的actionDelete中:
$this->loadModel($id)->photo->delete();
Run Code Online (Sandbox Code Playgroud)
但没有任何反应,专辑也没有被删除.
问题是什么?
相册中有很多照片,您应该循环删除它们
$photos = $this->loadModel($id)->photo;
foreach($photos as $photo)
$photo->delete();
Run Code Online (Sandbox Code Playgroud)
或者您可以在一个查询中删除它们:
Photo::model()->deleteAllByAttributes(array('album_id'=>$id))
Run Code Online (Sandbox Code Playgroud)
由于你有HAS_MANY
关系,你将不得不删除许多对象,所以要使用1次调用来实现它,你可以通过其他模型来实现,所以在Album
模型中放置这个方法:
public function deletePhotos() {
return Photo:::model()->deleteAllByAttributes(array('album_id' =>$this->id));
}
Run Code Online (Sandbox Code Playgroud)