Laravel启动方法

Jam*_*mie 3 php laravel-5

在我的模型中,我设置了引导方法,因此当我软删除记录时,相关记录也会被软删除。像这样:

公司.php

protected static function boot()
    {
        parent::boot();
        static::deleting(function($company) {
            $company->department()->delete();
        });
    }
Run Code Online (Sandbox Code Playgroud)

部门.php:

 protected static function boot()
    {
        parent::boot();
        static::deleting(function($department) {
            dd('test');
        });
    }
Run Code Online (Sandbox Code Playgroud)

因此,当我想要软删除公司时,部门也应该被软删除。但是当我dd在static::deleting(Department.php)中时,这还没有达到。当我dd喜欢这样的时候:

部门.php

protected static function boot()
    {
        parent::boot();
        dd('test');
        static::deleting(function($department) {
        });
    }
Run Code Online (Sandbox Code Playgroud)

结果是test

我在这里做错了什么?

小智 6

将其添加到您的 Company.php 模型中:

public function departments()
{
    return $this->hasMany('App\Department');
}
Run Code Online (Sandbox Code Playgroud)

将其添加到您的 Department.php 模型中:

public function company()
{
    return $this->belongsTo('App\Company');
}
Run Code Online (Sandbox Code Playgroud)

更新 Company.php 中的引导方法以供参考

$company->departments()->delete()
Run Code Online (Sandbox Code Playgroud)

然后你应该从 Department.php 文件中取出 boot 方法,因为这是不需要的。