在Laravel中一对多删除相关模型

尼古拉·西切维奇

这有可能吗?在我阅读的每个教程中,都没有关于删除的内容,仅选择和插入相关模型。

这是我的问题:

我有三个层次的嵌套。我有课程包,水平,课程和阶段,其模型如下。第一个-套件:

class Package extends Eloquent  {

protected $table = 'packages';
public $timestamps = false;

public function levels(){
    return $this->hasMany('Level', 'package_id');
}

}

级别:

class Level extends Eloquent  {

protected $table = 'levels';

public function lessons(){
    return $this->hasMany('Lesson', 'level_id');
}

public function package(){
    return $this->belongsTo('Package', 'package_id');
}

}

经验教训:

课堂延伸口才{

protected $table = 'lessons';

public function phases(){
    return $this->hasMany('Phase', 'lesson_id');
}

public function level(){
    return $this->belongsTo('Level', 'level_id');
}

}

我要在这里做的是删除一个程序包时删除与其相关的所有级别,并删除与这些级别相关的所有课程。

我尝试了几个选项,但它们全都错了,我只是不知道如何在不进行foreach循环查询的情况下做到这一点。请给我一些建议,我非常绝望,我正在考虑给Jeffrey Way发推文,并请他提供解决方案:)预先感谢

埃德佩兹

您可以通过两种方式解决此问题:

  1. 利用数据库为您执行删除操作。您将分别lessonslevels和的迁移中添加这样的内容packages

     $table->foreign('level_id')->references('id')->on('levels')->onDelete('cascade');
    
     $table->foreign('lesson_id')->references('id')->on('lessons')->onDelete('cascade');
    
     $table->foreign('package_id')->references('id')->on('packages')->onDelete('cascade');
    
  2. 您可以覆盖delete每个模型上方法以删除其所有关系:

    class Lesson extends Eloquent {
    
        protected $table = 'lessons';
    
        public function phases(){
            return $this->hasMany('Phase', 'lesson_id');
        }
    
        public function level(){
            return $this->belongsTo('Level', 'level_id');
        }
    
        public function delete()    
        {
            DB::transaction(function() 
            {
                $this->level()->delete();
                $this->phases()->delete();
                parent::delete();
            });
        }
    
    }
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Laravel中一对多删除相关模型

来自分类Dev

在grails中一对多删除对象及其映射

来自分类Dev

Django一对一-不想删除相关模型

来自分类Dev

Django一对一-不想删除相关模型

来自分类Dev

使用Django删除一对多相关模型

来自分类Dev

laravel如何一对一删除相关数据?

来自分类Dev

laravel如何一对一删除相关数据?

来自分类Dev

Laravel 一对多模型关系不起作用

来自分类Dev

一对多的导轨模型

来自分类Dev

在休眠中一对多查询

来自分类Dev

在Jpa中一对多映射

来自分类Dev

EF中一对多的最佳方法

来自分类Dev

多线程模型-一对多模型

来自分类Dev

模式迁移:PostgreSQL中一对多,多对多

来自分类Dev

根据 Laravel 中一对多(逆)关系的数据获取行列表

来自分类Dev

Laravel雄辩一对多

来自分类Dev

如何从Laravel中的相关表中获取数据(一对多)?

来自分类Dev

Laravel雄辩:一对一和一对多两种模型之间的多重关系

来自分类Dev

一对多和一对多的关系 1 laravel

来自分类Dev

这是一对多的关系模型问题

来自分类Dev

自引用一对多模型

来自分类Dev

一对多模型和Django Admin

来自分类Dev

Laravel多对多与加载相关的模型

来自分类Dev

Grails计算域类中一对多的子代

来自分类Dev

Grails 3中一对多域的深层副本

来自分类Dev

灰烬数据:加载一对一的相关模型

来自分类Dev

在SQL中一起实现一对一和一对多查询

来自分类Dev

一对多映射而不是级联删除

来自分类Dev

删除关系一对多nestjs