Laravel多态关系分离和删除

时间:2016-07-25 10:36:06

标签: php laravel polymorphism

有谁能告诉我如何完成这项工作?当我删除相册时,我想从服务器删除所有上传的文件,删除关系并删除数据库中的照片。删除文件是有效的(但如果有更好的方法可以做到这一点,请一定赐教):

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();
}

1 个答案:

答案 0 :(得分:1)

进行迁移时,您可以说ON DELETE CASCADE,这基本上会删除已删除相册的所有连接照片