当我删除帖子(广告系列)时,与已删除的广告系列相关的付款仍在数据库中,我也希望将其删除。 (laravel,controller)

问题描述 投票:0回答:2

需要一些帮助

[当我从众筹平台删除广告系列时,如果该广告系列已经付款了,则会出错,

付款仍在数据库中而没有广告系列所以我在付款清单视图中出现了错误。我唯一的解决方案是转到数据库并删除属于已删除广告系列的付款。

当我删除广告系列时,它还必须删除自己的付款

  • campaign Controller(删除功能):
    public function deleteCampaigns($id = 0){
        if(config('app.is_demo')){
            return redirect()->back()->with('error', __('app.feature_disable_demo'));
        }

        if ($id){
            $campaign = Campaign::find($id);
            if ($campaign){
                $campaign->delete();
            }
        }
        return back()->with('success', trans('app.campaign_deleted'));
    }

数据库中的每笔付款都与广告系列表中的campaign_id相关联

php laravel eloquent controller php-carbon
2个回答
1
投票
[如果您在Campaign模型上正确设置了toMany关系,那么您可以在该关系上调用delete(),只要没有附加约束,它就会删除所有相关的付款。

因此,假设与付款的toMany关系称为payments,然后:

if ($campaign){ $campaign->payments()->delete(); $campaign->delete(); }


0
投票
您可以在迁移中创建外键约束。例如,>

$table->foreign('campaign_id') ->references('id')->on('payments') ->onDelete('cascade');

因此,当您删除广告系列时,它将删除其付款外键约束模型,或者更容易地说其雄辩的hasMany关系。

© www.soinside.com 2019 - 2024. All rights reserved.