8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 Laravel 10 上删除父级记录后无法软删除相关记录

Chris B. Behrens 2月前

19 0

我正在使用 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。但我能够成功删除订单记录本身,但如果我删除计划,它将删除详细信息,而详细信息将删除订单记录。就是不起作用。

有人可以帮我吗?

谢谢。

帖子版权声明 1、本帖标题:在 Laravel 10 上删除父级记录后无法软删除相关记录
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Chris B. Behrens在本站《laravel》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: