如何删除基于数据透视表信息的多对多关系

如何删除基于数据透视表信息的多对多关系

问题描述:

我需要根据存储在其中的信息从我的数据透视表中分离记录。如何删除基于数据透视表信息的多对多关系

所以我有三个表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";