2017-01-26 1 views
0

Ich habe zwei Tabellen. Tabelle reportsLöschen Sie Zeilen in Pivot-Tabelle in Laravel

report_id | user_id | item_id 

und reports_messages

report_id | user_id | item_id | messages 

ich will, wenn ich report_id auf reports alle zugehörigen Zeilen löschen, die report_id in reports_messages passend zu gelöscht werden.

In meinem ReportMessages Modell Ich habe diese Beziehung

public function reports(){ 
    return $this->belongsTo('App\Report'); 
} 

public function item(){ 
    return $this->belongsTo('App\Item', 'item_id', 'id'); 
} 

In Report-Modell

public function reportedItem(){ 

    return $this->belongsTo('App\Item'); 
} 

public function user(){ 
    return $this->hasOne('App\User', 'id', 'user_id'); 
} 

Bisher habe ich diese Lösung hier SO gegründet habe versucht, auf

public function destroy($report_id){ 

    Report::destroy($report_id); 
    ReportMessages::find(1)->reports()->where('report_id',$report_id)->delete(); 

    return redirect()->route('user.ports'); 

Dies löscht nur in reports .. löscht nicht verwandte report_id's in Pivot-Tabelle. }

Antwort

2

Laravel hat die Funktionen detach and attach, um mit Pivot-Tabellen umzugehen. So können Sie dies tun, den Datensatz in der Pivot-Tabelle zu entfernen: aber dies wird

ReportMessages::find(1)->reports()->detach($report_id); 

nicht die Zeile in der Bericht Tabelle entfernen, weil es noch zu einem anderen Objekt verknüpft werden könnte.

Update:
Also, ich habe gerade bemerkt, Sie haben keine Pivot-Tabellen, nur zwei Modelle, die miteinander verbunden sind.

Sie müssen die reports() Beziehung in Ihrer Abfrage nicht laden Sie die ReportMessages zu entfernen, können Sie es wie folgt aus:

Report::destroy($report_id); 
ReportMessages::where('report_id',$report_id)->delete(); 

Dies wird den Bericht entfernen und alle entsprechenden reportmessages.

+0

Danke. Ich habe diesen Fehler 'Call to undefined Methode Illuminate \ Database \ Query \ Builder :: detach()' – user5996816

+0

Ich aktualisierte meine Antwort, Sie haben eigentlich keine Pivot-Tabelle ... – Jerodev

+0

Oh, Gott. Und ich versuchte es mit einem Pivot-Tisch. Sie sind wirklich nur durch Modelle verbunden. Wie dumm von mir. Danke für die Hilfe! – user5996816

Verwandte Themen