public function posts(){
return $this->hasMany('App\Post');}
后:
public function user(){
return $this->belongsTo('App\user');}
我的帖子有“user_id”列,所以每个帖子都有“user_id”所有者。
这是我的问题:我想删除用户,但相关帖子没有任何变化。现在我可以这样做,但我的问题是post_id列有id属于已删除的用户。我想将其更改为“null”或“0”。
答案 0 :(得分:2)
只需确保您的post_id
字段在迁移和数据库中设置为可为空。
答案 1 :(得分:2)
您可以使用模型事件执行此操作。您的用户模型上有类似的内容。
public static function boot() {
parent::boot();
static::deleting(function($user) {
$user->posts()->update(['user_id' => null]);
});
}
还要确保user_id字段在迁移时可以为空。
答案 2 :(得分:2)
您可以使用SQL功能执行此操作 - 向您的表添加迁移"帖子" ...
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('set null');
它将创建一个外键,在删除用户行
时将null设置为相关字段答案 3 :(得分:1)
您可以从用户模型更改功能boot():
protected static function boot() {
parent::boot();
static::deleting(function($user) {
$user->posts()->delete();
});
}