从一对多关系中删除 Laravel

我在一对多关系中有以下两个模型:


分类.php


public function post()

{

    return $this->hasMany('App\Category', 'category_id');

}

和Post.php


public function category()

{

    return $this->belongsTo('App\Post', 'category_id');

}

  1. 我删除了下面几乎没有博客文章的类别。

  2. 打开分类被删除的博文

  3. 获取错误,因为该类别不再存在

在不导致错误的情况下删除类别的最佳方法是什么?我应该在删除他们的类别时设置category_idof postnull吗?


不负相思意
浏览 213回答 2
2回答

慕莱坞森

也许这将是迟到的答案,但无论如何我都会回答谷歌搜索。如果您不希望在删除项目上的模型时出现任何空错误,您可以处理数据库上的关系级联。将此代码写入您的项目表迁移。$table->bigInteger('category_id')->unsigned();$table->foreign('category_id')->references('id')      ->on('categories')->onDelete('cascade');

尚方宝剑之说

使用withDefault如果任何类别不存在,它会给你空。分类.phppublic function post(){    return $this->hasMany('App\Post', 'category_id')->withDefault();}后.phppublic function category(){    return $this->belongsTo('App\Category', 'category_id')->withDefault();}
打开App,查看更多内容
随时随地看视频慕课网APP