Size: a a a

Laravel для начинающих

2021 May 21

LD

Lugovskoy Dmitriy in Laravel для начинающих
При update пользователя мне нужно проверить email на уникальность, а если email уже существует, то просто игрорировать.
Моя попытка
'email' => ['required', 'email', Rule::unique('users', 'email')->ignore($this->id)],
к результату не приводит. При сохранении идет ошибка валидации, что такое поле существует. А по идее должно игрорировать, так как изменеий в email не было внесено.
Поставил Telepost, но так как я с этим впервые сталкиваюсь, то не могу понять что к чему.
Вижу что в Payload все данные передаются. Кто-нибудь может помочь?
источник

AH

Andrey Helldar in Laravel для начинающих
Ссылка в описании
источник

ДА

Денис Арасланов... in Laravel для начинающих
Аа
источник

ДА

Денис Арасланов... in Laravel для начинающих
Я вот даже не знал)
источник

AH

Andrey Helldar in Laravel для начинающих
*Telescope

На вкладке запросов есть голый SQL. Проверь правильно ли он кидает запрос в базу.
источник

AH

Andrey Helldar in Laravel для начинающих
Теперь знаешь что и правила в чате есть :)
источник

D

David in Laravel для начинающих
У Service Provider'а , который абстрактный и от которого все провайдеры наследуются, каким образом в конструктор попадает инстанс Application'a($app)? Просто само инжектиться?
источник

LD

Lugovskoy Dmitriy in Laravel для начинающих
Во вкладке Queries я вообще не увидел запроса на update или insert одни селекты
источник

J

Jeen in Laravel для начинающих
Что значит "просто игнорировать"? Не производить апдейт?
источник

LD

Lugovskoy Dmitriy in Laravel для начинающих
Если email не изменять, то его надо пропустить
источник

С

Сидредин in Laravel для начинающих
делай update. При этом email не включай в список полей для апдейта
источник

С

Сидредин in Laravel для начинающих
И это лучше делать на фронте
источник

С

Сидредин in Laravel для начинающих
Иначе лишние запросы к БД
источник

AH

Andrey Helldar in Laravel для начинающих
На проверку select запрос
источник

LD

Lugovskoy Dmitriy in Laravel для начинающих
Если email изменять (вводить новый), то его надо проверять на уникальность. А если ничего не вводить, оставить старый, то необходимо пропустить.
Поэтому и пишу
'email' => ['required', 'email', Rule::unique('users', 'email')->ignore($this->id)],
источник

AH

Andrey Helldar in Laravel для начинающих
В случае валидации это искать по базе мыло за исключением конкретной записи
источник

LD

Lugovskoy Dmitriy in Laravel для начинающих
Когда захоим на редактирование, то там обычный селект идет
select * from users where users.id = '62' limit 1
источник

AH

Andrey Helldar in Laravel для начинающих
Это запрос на бинд юзера.

Валидация должна иметь примерно такой вид:

select * from users where email = 'your-email' and id <> 123 limit 1
источник

LD

Lugovskoy Dmitriy in Laravel для начинающих
Может быть этот идет на валидацию
select count(*) as aggregate from users where email = 'email'
источник

AH

Andrey Helldar in Laravel для начинающих
Вполне может быть. Я не помню какой точно запрос строится. Проекта с телескопом нет под рукой.

Но нужно проверить передаёт ли он id этот запрос
источник