Laravel 中利用『模型事件』来实现删除数据时的连带删除

  • James
  • 1年前
  • 1000+ 阅读
  • 更新于 1天前
laravel  

删除一条数据库记录的时候希望能自动删除这条记录关联的其它数据,如删除用户后连带删除其创建的文章和图片。
1、可以用Eloquent的deleting事件来实现:

class WheelActivity extends Model
{
    public function awards() {
        return $this->hasMany('App\Model\WheelAward', 'wheel_activity_id', 'id');
    }

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

        static::deleting(function($wheelactivity){
            $wheelactivity->awards()->delete();
        });
    }

    **注:** 在控制器中删除时必须使用first()查询,否则无效。
    example:WheelActivity::where('id', $id)->first()->delete();
}

 2、在控制其中直接删除

    $user = User::find($id);
    $user->photos()->delete();   //  删除关联表的数据
    $user->delete();             //  删除主表数据

3、在AppServiceProvider 监听模型事件

    public function boot()
    {
        WheelActivity::deleting(function($wheelactivity){
            $wheelactivity->awards()->delete();
        });
    } 

4、使用事物(自己脑补吧,这里不做具体说明)。 


   本站文章除注明转载/出处外,均为本站原创或翻译。若要转载但请务必注明出处,尊重他人劳动成果。    本文链接: http://james.dmzfa.com/articles/laravel-zhong-li-yong-mo-xing-shi-jian-lai-shi-xian-shan-chu-shu-ju-shi-de-lian-dai-shan-chu

上一篇:Laravel 创建软链接

下一篇:Laravel-admin 登录添加验证码

文章评论 (0)发表评论

Top