我在两个模特(照片,专辑)中有这些关系。在项目模型中:
'photo' => array(self::HAS_MANY, 'photo', 'album_id')
在照片模型中:
'album' => array(self::BELONGS_TO, 'Album', 'album_id'),
在albumController的actionDelete中:
$this->loadModel($id)->photo->delete();
但没有任何反应,相册也不会被删除。
有什么问题?
答案 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代码