Ошибка при удалении роли voyager уже назначена пользователю - PullRequest
0 голосов
/ 21 февраля 2020

Я использую админ панель voyager. Я пытаюсь удалить роль разрешения, которая уже назначена пользователю, затем voyager выдает ошибку:

2020-02-19 11:07:56] local.ERROR: SQLSTATE [23000] : Нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа (data_base_name. users, CONSTRAINT users_role_id_foreign FOREIGN KEY (role_id) ССЫЛКИ roles (id)) ( SQL: удалить из roles, где id = 4)

voyager должен показать мне сообщение о том, что роль не может удалить назначенную ему роль.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020
public function destroy(Request $request, $id)
{
    try {
        return parent::destroy($request, $id);
    } catch (QueryException $exception) {
        $message = $exception->getMessage();
        if (strpos($message, 'foreign key constraint') !== false) {
            $message = "This row can't be deleted";
        }

        return back()->with(['message' => $message]);
    }
}
0 голосов
/ 21 февраля 2020

Вам нужно try-catch для чего-то подобного. Поскольку это внешний ключ, назначенный другой записи, ожидается, что поведение не сможет его удалить.

Поскольку вы создаете сообщение из-за ошибки, вы должны сделать что-то вроде:

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