У меня есть политика, которая проверяет, может ли аутентифицированный пользователь удалить консультанта.
К сожалению, ответ всегда несанкционирован, и я не уверен, почему!
Политическая функция (ClinicConsultantPolicy):
public function delete(User $user, Consultant $consultant)
{
$consultant_clinic_id = $consultant->clinic_id;
return $user->clinic->id === $consultant_clinic_id;
}
Контроллер, вызывающий вышеуказанную функцию (ClinicConsultantController):
public function destroy($id)
{
$consultant = Consultant::find($id);
$this->authorize('delete', $consultant);
Consultant::find($id)->delete();
return redirect('clinic/consultants');
}
Если я выведу две переменные, которые пытается сопоставить политика (идентификатор клиники пользователя и идентификатор клиники консультанта), обе будут равны 2.
Тем не менее, очевидно, что один из них либо не равен 2, либо, возможно, не определен, когда он достигает политики, но я не уверен, почему? Большое спасибо за вашу помощь.
Для меня это выглядит как проблема модели отношений при звонке $user->clinic->id
, Было бы очень полезно, если бы вы предоставили реализацию отношений. Я могу только предложить писать
$user->clinic()->first()->id
если ваши отношения установлены как один ко многим. ура
Других решений пока нет …