我的问题与Laravel 5.6有关。我有Post
和Category
模型。它们具有一对多关系,其中category_id
表中的外键为posts
。 category_id
为可空字段
//Post Model
class Post extends Model
{
public function category()
{
return $this->belongsTo('App\Category', 'category_id', 'id');
}
}
//Category Model
class Category extends Model
{
public function posts()
{
return $this->hasMany('App\Post', 'category_id', 'id');
}
}
我的问题是,如果我删除类别。如何将category_id
表中所有相关帖子的posts
设置为null?
我知道laravel提供dissociate
方法,但是我认为这是针对belongsTo
关系的。是否有类似下面的内容?
$category::find($id);
$category->posts()->dissociate(); //set all foreign key(category_id) to null in posts table
$category->delete();
答案 0 :(得分:3)
您不想自己照顾它,让外键处理它(如CD001所建议):
Schema::create('posts', function (Blueprint $table) {
[...]
$table->foreign('category_id')->references('id')->on('categories')
->onDelete('set null');
});