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

时间:2014-05-06 08:00:50

标签: php yii relationship

我在两个模特(照片,专辑)中有这些关系。在项目模型中:

'photo' => array(self::HAS_MANY, 'photo', 'album_id')

在照片模型中:

'album' => array(self::BELONGS_TO, 'Album', 'album_id'),

在albumController的actionDelete中:

 $this->loadModel($id)->photo->delete();

但没有任何反应,相册也不会被删除。

有什么问题?

3 个答案:

答案 0 :(得分:6)

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

$photos = $this->loadModel($id)->photo;
foreach($photos as $photo)
    $photo->delete();

或者您可以在一个查询中删除它们:

Photo::model()->deleteAllByAttributes(array('album_id'=>$id))

答案 1 :(得分:5)

由于您有HAS_MANY关系,因此您必须删除许多对象,因此要使用1次调用来实现,您可以通过其他模型执行此操作,因此在Album中模型把这个方法:

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

答案 2 :(得分:0)

最佳实践是使用数据库Relational model首先它工作得更快,其次你不需要编写很多php代码