Laravel 开机方式
Laravel boot method
在我的模型中,我设置了引导方法,因此当我软删除记录时,相关记录也会被软删除。像这样:
Company.php
protected static function boot()
{
parent::boot();
static::deleting(function($company) {
$company->department()->delete();
});
}
Department.php:
protected static function boot()
{
parent::boot();
static::deleting(function($department) {
dd('test');
});
}
所以当我想软删除公司时,部门也应该被软删除。但是当我在static::deleting
(Department.php)中dd
时,这个是达不到的。当我 dd
这样时:
Department.php
protected static function boot()
{
parent::boot();
dd('test');
static::deleting(function($department) {
});
}
结果是test
我做错了什么?
将此添加到您的 Company.php 模型中:
public function departments()
{
return $this->hasMany('App\Department');
}
将此添加到您的 Department.php 模型中:
public function company()
{
return $this->belongsTo('App\Company');
}
更新 Company.php 中的启动方法以供参考
$company->departments()->delete()
那你应该把Department.php文件中的boot方法去掉,不需要这个
在公司模型中:
- 描述公司与部门的关系:
public function departments(){
return $this->hasMany(Department::class);
}
- 迭代每个部门以在公司模型中的方法 boot() 中删除:
protected static function boot(){
parent::boot();
static::deleting(
function($company){
$company->departments()->
each(fn($department)=>$department->delete());
});
}
部门模型中:描述部门与公司的关系
public function company(){
return $this->belongsTo(Company::class);
}
在我的模型中,我设置了引导方法,因此当我软删除记录时,相关记录也会被软删除。像这样:
Company.php
protected static function boot()
{
parent::boot();
static::deleting(function($company) {
$company->department()->delete();
});
}
Department.php:
protected static function boot()
{
parent::boot();
static::deleting(function($department) {
dd('test');
});
}
所以当我想软删除公司时,部门也应该被软删除。但是当我在static::deleting
(Department.php)中dd
时,这个是达不到的。当我 dd
这样时:
Department.php
protected static function boot()
{
parent::boot();
dd('test');
static::deleting(function($department) {
});
}
结果是test
我做错了什么?
将此添加到您的 Company.php 模型中:
public function departments()
{
return $this->hasMany('App\Department');
}
将此添加到您的 Department.php 模型中:
public function company()
{
return $this->belongsTo('App\Company');
}
更新 Company.php 中的启动方法以供参考
$company->departments()->delete()
那你应该把Department.php文件中的boot方法去掉,不需要这个
在公司模型中:
- 描述公司与部门的关系:
public function departments(){
return $this->hasMany(Department::class);
}
- 迭代每个部门以在公司模型中的方法 boot() 中删除:
protected static function boot(){
parent::boot();
static::deleting(
function($company){
$company->departments()->
each(fn($department)=>$department->delete());
});
}
部门模型中:描述部门与公司的关系
public function company(){
return $this->belongsTo(Company::class);
}