2016-10-17 16 views
0

После нескольких часов отладки и попытки решить проблему, я не нашел решение. Поэтому я надеюсь, что вы можете мне помочь.Detach Laravel 5.3

У меня есть этот маленький кусочек кода:

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

var_dump($removed); 

Моя проблема заключается в том, что я не могу понять, почему $ удалить это «ложь» всегда. Если я прокомментирую строку $ store-> persons() -> detach ($ person) ;, все будет работать так, как ожидалось, и $ removed будет "true". Я не понимаю, почему это происходит, но я надеюсь, что вы можете мне помочь.

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, 
    ]); 
} 

Спасибо.

+0

Я чувствую, что нам не хватает информации здесь. Не могли бы вы отправить больше кода? Где вы называете кассиров? –

+0

Ошибка Кассиров. Я добавил полный код метода. Спасибо. –

ответ

1

Метод detacth/attach не принимает полную модель в качестве аргумента, вместо этого они оба нуждаются в идентификаторе связанной модели, поэтому в вашем случае вам необходимо передать идентификатор в методе detach для ex.

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

С объектом или id он отлично работает (отсоединяется), однако я не знаю, почему $ remove не становится истинным. –

+0

И ... В Laravel 5.3 функция detach проверяет, является ли этот параметр экземпляром модели или коллекции на первом шаге. Таким образом, вы можете указать модель, коллекцию или массив параметров id. –

 Смежные вопросы

  • Нет связанных вопросов^_^