我正在使用 Laravel 10,在删除父记录后软删除子记录时遇到麻烦。我尝试使用启动模型删除相关记录,但没有成功。这是模型代码:
我正在使用 Laravel 10,在删除父记录后软删除子记录时遇到麻烦。我尝试使用启动模型删除相关记录,但没有成功。
这是模型代码:
规划.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Planning extends Model
{
use HasFactory;
use SoftDeletes;
protected static function booted(): void
{
static::deleted(function ($planning) {
$planning->planningDetail()->delete();
});
}
public function planningDetail(){
return $this->hasMany(PlanningDetail::class, 'planning_id', 'id');
}
}
规划细节.php
<?php
namespace App\Models;
use App\Traits\UserRecords;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class PlanningDetail extends Model
{
use HasFactory;
use SoftDeletes;
use UserRecords;
protected static function booted(): void
{
static::deleted(function ($planningDetail) {
$planningDetail->orderRecord()->delete();
});
}
public function orderRecord()
{
return $this->hasOne(OrderRecord::class, 'planning_detail_id', 'id');
}
}
订单记录.php
class OrderRecord extends Model
{
use HasFactory;
use SoftDeletes;
public function planningDetail()
{
return $this->belongsTo(PlanningDetail::class, 'planning_detail_id', 'id');
}
所以我这里有 3 个模型。规划和 orderRecord 与 planning_detail 相关,其中规划有许多 planning_detail,而 orderRecord 只有一个 planning_detail。因此我尝试软删除规划,在启动时它将删除与规划相关的记录,即 planning_detail,它执行了软删除 planning_detail,工作如预期。
删除 planning_detail 后,在模型 planning_detail 中,planning_detail 将在 planning_detail 被删除后删除 orderRecord。如果在启动时删除 planning_detail,它将删除订单记录,但由于某种原因,启动不起作用。它只是不会删除相关数据,即 orderRecord。但我能够成功删除订单记录本身,但如果我删除计划,它将删除详细信息,而详细信息将删除订单记录。就是不起作用。
有人可以帮我吗?
谢谢。