有谁能告诉我如何完成这项工作?当我删除相册时,我想从服务器删除所有上传的文件,删除关系并删除数据库中的照片。删除文件是有效的(但如果有更好的方法可以做到这一点,请一定赐教):
foreach($album->photos as $photo)
{
File::delete($photo->path);
File::delete($photo->thumbnail_path);
}
但我的主要问题是这个。我想分离相册和照片之间的关系,并在删除实际文件后删除数据库中的照片。但我只能使用分离删除关系,或使用删除从数据库中删除照片。无论我首先使用哪一个,因为之后关系消失或照片消失,当然。
我怎么能两个都做?有没有一种简单的方法可以实现这一目标?
编辑:
现在这样做,好方法还是有更好的方法?
public function delete(Album $album)
{
$ids = array();
foreach($album->photos as $photo)
{
File::delete($photo->path);
File::delete($photo->thumbnail_path);
$ids[] = $photo->id;
}
$album->photos()->detach();
Photo::whereIn('id',$ids)->delete();
$album->delete();
flash()->success('Album deleted');
return back();
}
答案 0 :(得分:1)
进行迁移时,您可以说ON DELETE CASCADE,这基本上会删除已删除相册的所有连接照片