Laravel 5.2,级联删除时删除相关文件

时间:2016-06-16 22:06:21

标签: laravel eloquent laravel-5.2

我的问题是关于在删除模型中的文件时使用Eloquent,这与另一个与另一个模型相关的模型有关,所有这些都是通过外部约束进行的:

  • 经销商有很多客户
  • 客户有多个文件

Documents模型包含'document_name'列。

所以从本质上讲,我想在删除经销商时删除文件;

经营人>客户 - >文件─> DOCUMENT_NAME

我在Documents模型上放了一个删除方法,但是当我删除经销商时如何让它一直推迟?当我删除客户时,我也会效仿。

我是以正确的方式做到这一点,还是有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

最简单的方法是在删除此模型时创建一个事件

<?php

class Dealer extends Model
{
    public function customers()
    {
        return $this->hasMany('Customer');
    }

    // this is a recommended way to declare event handlers
    protected static function boot() {
        parent::boot();

        static::deleting(function($dealer) {
             // do all of the logic for deleting customers and files here
             $dealer->customers->get()->delete();
        });
    }
}

请记住,删除客户和文件的过程可能不正确,但概念基本相同。