«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как обновить модель Laravel с помощью уникальных правил проверки без ошибок?

Как обновить модель Laravel с помощью уникальных правил проверки без ошибок?

Опубликовано 8 ноября 2024 г.
Просматривать:940

How to Update a Laravel Model with Unique Validation Rules Without Errors?

Laravel: обновление модели с использованием уникальных правил проверки

В Laravel проверка полей во время обновления модели имеет решающее значение для обеспечения целостности данных. Однако уникальные правила проверки могут вызвать проблемы при обновлении существующих записей.

Рассмотрим следующий код в классе репозитория:

public function update($id, $data) {
    $user = $this->findById($id);
    $user->fill($data);
    $this->validate($user->toArray());
    $user->save();

    return $user;
}

Этот код пытается повторно проверить поля модели, включая уникальные поля, такие как «имя пользователя» и «адрес электронной почты». Однако этот подход может привести к ошибкам проверки при попытке обновить записи с существующими уникальными значениями.

Чтобы решить эту проблему, нам необходимо исключить текущую запись из проверки, чтобы разрешить обновления без нарушения ограничений уникальности. Мы можем добиться этого, добавив идентификатор обновляемого экземпляра в валидатор. Вот как это сделать:

  1. Передайте идентификатор экземпляра:
    Передайте идентификатор обновляемого экземпляра в метод обновления:

    public function update($id, $data) {
        $user = $this->findById($id);
        $user->fill($data);
        $this->validate($user->toArray(), ['id' => $id]);
        $user->save();
    }
  2. Исключить текущую запись из проверки:
    В валидаторе мы используем параметр id, чтобы определить, обновляем ли мы ресурс или создаем его:

    • Обновление: Для уникальных правил проверки добавьте ,{$id} к правилу, чтобы исключить текущую запись. Например:

      'email' => 'unique:users,email,{$id}',
    • Создание: Для уникальных правил проверки не включайте идентификатор. Например:

      'email' => 'unique:users,email',

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3