删除操作不适用于Yii中的相关模型

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)

但没有任何反应,专辑也没有被删除.

问题是什么?

Ale*_*lex 6

相册中有很多照片,您应该循环删除它们

$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)


Abe*_*awa 5

由于你有HAS_MANY关系,你将不得不删除许多对象,所以要使用1次调用来实现它,你可以通过其他模型来实现,所以在Album模型中放置这个方法:

public function deletePhotos() {    
    return Photo:::model()->deleteAllByAttributes(array('album_id' =>$this->id));
}
Run Code Online (Sandbox Code Playgroud)