Laravel 5:级联软删除 [英] Laravel 5: cascade soft delete

查看:232
本文介绍了Laravel 5:级联软删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我拥有优惠服务表格。

服务是优惠的孩子。到目前为止,我已经建立了软删除优惠的功能。我还如何软删除附加的服务?这是我的代码:

Service(s) is a child of an offer. So far I have established functionality for soft deleting an offer. How would I also soft delete appended services? Here is my code:

迁移优惠

Schema::create('offers', function(Blueprint $table)
{
    $table->increments('id')->unsigned();
    ...    
    $table->timestamps();
    $table->softDeletes();
});

迁移服务

Schema::create('services', function(Blueprint $table) 
{
    $table->increments('id');
    $table->integer('offer_id')->unsigned();   
    ...
    $table->timestamps();
    $table->softDeletes();
});

Schema::table('services', function($table) 
{
    $table->foreign('offer_id')
          ->references('id')
          ->on('offers');
});

模特优惠

use SoftDeletes;
protected $dates = ['deleted_at'];

public function services() {
    return $this->hasMany('App\Service');
} 

模特服务

public function offer() {
    return $this->belongsTo('App\Offer');
} 

删除方法

public function destroy($id)
{
    $offer = Offer::find($id);
    $offer->delete();
}

感谢您的帮助。

推荐答案

我已将此代码放在Offer模型中:

I have put this code in Offer model:

protected static function boot() {
    parent::boot();

    static::deleting(function($offer) {
        $offer->services()->delete();
    });
}

并添加缺少

use SoftDeletes;
protected $dates = ['deleted_at'];

在服务模式中。

这篇关于Laravel 5:级联软删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆