如何删除基于数据透视表信息的多对多关系
问题描述:
我需要根据存储在其中的信息从我的数据透视表中分离记录。如何删除基于数据透视表信息的多对多关系
所以我有三个表1)活动2)activity_submissions 3)提交
一个活动可以有很多意见,并提交一个可以有很多活动,他们共用一个多对多的关系。现在有一个问题:activity_submissions表中也有一个描述列。
这是activity_submissions表:
id | activity_id | submission_id | desription
所以,我有三个记录如下:
1 | 20 | 1 | "First"
2 | 20 | 1 | "Second"
3 | 20 | 1 | "Third"
我只想reove一个与说明 “第三”。
我试着用分离,但删除所有的人:
$activity=\App\Activity::find(20);
$submissions=$activity->submissions()->where('submission_id','=','1')->get();
for($i=0; $i<$submissions->count(); $i++){
if ($submissions[$i]->pivot->description == "Third"){
$submissions[$i]->activities()->detach();
}
}
但这种代码分离我所有的记录,我怎么会去这样做?我正在使用Laravel 5.0。
答
您可以使用->wherePivot()
函数来过滤数据透视表。
$submissions[$i]->activities()->wherePivot('description', '=', $yourVal)->detach();
在你的情况$yourVal = "Third";