2016-10-17 9 views
0

Nach einigen Stunden Debugging und versuchen, ein Problem zu lösen, finde ich keine Lösung. Also, ich hoffe, dass Sie mir helfen können.Laravel lösen 5.3

Ich habe dieses kleine Stück Code:

$removed = false; 
if ($store->persons->contains($person)) { 
    $store->persons()->detach($person); 
    $removed = true; 
} 

var_dump($removed); 

Mein Problem ist, dass ich nicht verstehen kann, warum $ entfernen „false“ immer ist. Wenn ich die Zeile $ store-> persons() -> detach ($ person); kommentiere, funktioniert alles wie erwartet und $ removed ist "true". Ich kann nicht verstehen, warum das passiert, aber ich hoffe, dass Sie mir helfen können.

EDIT

public function removePerson(Request $request, $storeId, $personId) 
{ 
    $store = Store::findOrFail($storeId); 
    $person = Cashier::findOrFail($personId); 

    $removed = false; 
    if ($store->persons->contains($person)) { 
     $store->persons()->detach($person); 
     $removed = true; 
    } 

    return response()->json([ 
     'removed' => $removed, 
    ]); 
} 

Danke.

+0

Ich fühle mich wie hier einige Informationen fehlen. Könnten Sie mehr Code posten? Wo rufst du Kassierer an? –

+0

Kassierer war ein Fehler. Ich habe den vollständigen Code der Methode hinzugefügt. Vielen Dank. –

Antwort

1

detacth/attach-Methode nehmen Sie nicht das vollständige Modell als Argument, sondern sie beide ID des zugehörigen Modells, so in Ihrem Fall müssen Sie id in detach-Methode für ex übergeben.

public function removePerson(Request $request, $storeId, $personId) 
{ 
    $store = Store::findOrFail($storeId); 
    $person = Cashier::findOrFail($personId); 

    $removed = false; 
    if ($store->persons->contains($person)) { 
     $store->persons()->detach($person->id); // or $personId which ever 
     $removed = true; 
    } 

    return response()->json([ 
     'removed' => $removed, 
    ]); 
} 
+0

Mit Objekt oder ID funktioniert es gut (trennen), aber ich weiß nicht, warum das $ remove nicht wahr wird. –

+0

Und ... In Laravel 5.3 überprüft die Detach-Funktion, ob der Parameter im ersten Schritt eine Instanz eines Modells oder einer Sammlung ist. Sie können also ein Modell, eine Sammlung oder ein Array von IDs als Parameter angeben. –