Laravel detach不起作用-它只是将轴列更新为null,而不是分离整个模型
我想从用户模型中分离技能模型,但不是分离,Laravel detach不起作用-它只是将轴列更新为null,而不是分离整个模型,laravel,Laravel,我想从用户模型中分离技能模型,但不是分离,detach($skillId)方法只是将透视列更新为null 我创建了route DELETE/skills/{skillId},并在Controller中返回了关于skills关系的detach metod 关系: public function skills() { return $this->belongsToMany(Skill::class, 'user_skill', 'user_id', 'skill_id'
detach($skillId)
方法只是将透视列更新为null
我创建了route DELETE/skills/{skillId},并在Controller中返回了关于skills关系的detach metod
关系:
public function skills()
{
return $this->belongsToMany(Skill::class, 'user_skill', 'user_id', 'skill_id')
->withPivot(['scale', 'started_at'])
->withTimestamps();
}
删除:
return auth()->user()->skills()->detach($skillId);
Pivot列已更新为null,但附加的模型仍然保留。您是否在Pivot模型上使用了softDeletes?否,但我也检查了它,以确保如果我正确理解了这一点,我没有使用它。问题是分离的技能没有从数据库中删除
detach
和attach
仅修改透视表。如果我从用户模型中分离技能模型,这意味着detach方法将删除包含用户id、技能id和其他透视列的整行?对我来说,分离后只有轴列为null,但用户id和技能id保持不变-就像附加但没有轴列请参见图片:您能看到查询日志显示的内容吗<代码>DB::enableQueryLog();auth()->user()->skills()->detach($skillId);dd(DB::getQueryLog())你在pivot模型上使用了softDeletes吗?没有,但我也检查了它,以确保我没有使用,如果我理解正确的话。问题是分离的技能没有从数据库中删除detach
和attach
仅修改透视表。如果我从用户模型中分离技能模型,这意味着detach方法将删除包含用户id、技能id和其他透视列的整行?对我来说,分离后只有轴列为null,但用户id和技能id保持不变-就像附加但没有轴列请参见图片:您能看到查询日志显示的内容吗<代码>DB::enableQueryLog();auth()->user()->skills()->detach($skillId);dd(DB::getQueryLog())代码>