【问题标题】:Laravel polymorphic relation detach and deleteLaravel 多态关系分离和删除
【发布时间】:2016-07-25 10:36:06
【问题描述】:

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

foreach($album->photos as $photo)
{
    File::delete($photo->path);
    File::delete($photo->thumbnail_path);
}

但我的主要问题是这个。我想分离相册和照片之间的关系,并在删除实际文件后从数据库中删除照片。但我只能使用 detach 删除关系,或者使用 delete 从数据库中删除照片。无论我先用哪个都行,因为之后要么关系消失,要么照片消失,当然。

我怎样才能做到这两点?有没有简单的方法可以做到这一点?

编辑:

现在就这样做,是好方法还是有更好的方法?

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

【问题讨论】:

  • 试试这个 \File::delete($file);

标签: php laravel polymorphism


【解决方案1】:

在进行迁移时,您只需说 ON DELETE CASCADE,这基本上会将所有连接的照片删除到已删除的相册中

【讨论】:

  • 谢谢,我确实想这样做,但我想我必须将它链接到一些外国 id。但显然情况并非如此,我很傻。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 2015-06-30
  • 2017-08-03
  • 2017-04-21
  • 2015-05-15
相关资源
最近更新 更多