2016-08-07 11 views
0

Ich möchte eloquente Daten aus 2 Tabellen löschen. Tabelle Dosen und Benutzer.kann keine eloquenten Daten in Laravel löschen. 5.2

eloquent: id und user_id

1.users (id, Name, Benutzername, E-Mail, Passwort, admin, remember_token, updated_at, created_at)

2.dosen (iddosen, user_id, namadosen, nipy , alamatdosen, notelpdosen usw.)

das ist meine Methode:

public function destroy($id) 
{  
$dosenUpdate = Request::all(); 
$user = User::find($id); 
$user->dosen()->delete($dosenUpdate); 
    return redirect('admin/dosen')->with('message', 'Data berhasil dihapus!'); 
} 

wenn ich diese Methode verwenden, Daten aus der Tabelle dosen gelöscht. aber in den Tabellenbenutzern gibt es noch Daten. wenn ich meine Methode geändert:

public function destroy($id) 
{  
$dosenUpdate = Request::all(); 
$user = User::find($id)->delete(); 
$user->dosen()->delete($dosenUpdate); 
    return redirect('admin/dosen')->with('message', 'Data berhasil dihapus!'); 
} 

bekam ich Fehler:

Call to a member function dosen() on boolean 

was ist der richtige Code?

+0

scheint es nicht vom Benutzer findet mit geben id .. so Ergebnis ist 'false' . Add 'if ($ user) {... dann delete}' – Hardy

+0

haben 'user' und' dosen' eine Beziehung von 1 zu 1? – jaysingkar

Antwort

1

In Ihrer destroy() Methode Sie den Booleschen Wert in $user statt Benutzermodell speichern, wie Sie in folgenden Zeile

$user = User::find($id)->delete(); 

Diese Linie das Modell löschen wird das Benutzermodell zu löschen und den Status der Rückkehr Frage, ob es erfolgreich ist oder nicht. Daher wird $user den Status delete() Methode zu speichern und nicht das user Modell

Ihre destroy() Methode unten ändern:

public function destroy($id) 
{  
$dosenUpdate = Request::all(); 
$user = User::find($id); 
$user->dosen()->delete($dosenUpdate); 
$user->delete(); 
    return redirect('admin/dosen')->with('message', 'Data berhasil dihapus!'); 
}