После нескольких часов отладки и попытки решить проблему, я не нашел решения. Итак, я надеюсь, что вы можете мне помочь.
У меня есть этот маленький кусочек кода:
$removed = false;
if ($store->persons->contains($person)) {
$store->persons()->detach($person);
$removed = true;
}
var_dump($removed);
Моя проблема в том, что я не могу понять, почему $ remove всегда «ложно».
Если я прокомментирую строку $ store-> people () -> detach ($ person); все будет работать так, как ожидается, и $ удалено будет «true». Я не могу понять, почему это происходит, но я надеюсь, что вы можете мне помочь.
РЕДАКТИРОВАТЬ
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,
]);
}
Спасибо.
Метод detacth / attach не принимает полную модель в качестве аргумента, вместо этого им обоим нужен идентификатор связанной модели, поэтому в вашем случае вам необходимо передать id в метод 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,
]);
}
Других решений пока нет …