2017-08-29 15 views
0

ピボットテーブルからレコードを削除する必要があります。ピボットテーブル情報に基づいて多対多リレーションシップを削除する方法

は、だから私は3つのテーブル、1)活動2)activity_submissions 3)提出

多くの応募を持つことができます

一つの活動や多くの活動を持つことができます1つの提出を持って、彼らは多くの関係に多くを共有しています。今、キャッチがあります:activity_submissionsテーブルには説明カラムもあります。

これはactivity_submissionsテーブルです:

id | activity_id | submission_id | desription 

以下のように、私は3つのレコードを持っている:私は唯一の説明 "サード" で1をreoveしたい

1 | 20 | 1 | "First" 
2 | 20 | 1 | "Second" 
3 | 20 | 1 | "Third" 

私は切り離し使ってみましたが、それはそれらのすべてを削除します。

$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を使用しています。

答えて

0

->wherePivot()機能を使用すると、ピボットテーブルを除外できます。あなたのケース$yourVal = "Third";

$submissions[$i]->activities()->wherePivot('description', '=', $yourVal)->detach(); 

関連する問題