Вам нужно try-catch
для чего-то подобного. Поскольку это внешний ключ, назначенный другой записи, ожидается, что поведение не сможет его удалить.
Поскольку вы создаете сообщение из-за ошибки, вы должны сделать что-то вроде:
try {
//query goes here
} catch(\Exception $e){
$error = $e->getMessage();
return $error;
}