Как проверить электронную почту при обновлении в laravel

#laravel #validation #updates

#ларавель #утверждение #Обновления

Вопрос:

У меня есть 2 таблицы с именами area_managers и shopkeepers . Я хочу validate email сделать это во area_managers время обновления таким образом, чтобы оно не совпадало с электронной почтой shopkeepers и area_managers таблицей. Я попробовал следующий способ, но он даже не позволяет использовать существующий адрес электронной почты соответствующего пользователя.

 public function update(Request $request, AreaManager $areaManager)  {  $request-gt;validate([   'email'=gt;'required|email|unique:shopkeepers,email|unique:area_managers,email,'.$areaManager-gt;id,  ]);  $areaManager-gt; email = $request-gt;email;  $areaManager-gt;update();  return redirect()-gt;route('area_manager.edit',$areaManager-gt;id);  }  

Комментарии:

1. Добро пожаловать в SO … вам придется игнорировать запись текущего пользователя из уникального правила, в документах объясняется, как это сделать для этого правила

2. Итак, вам нужно проверить уникальность при обновлении, верно ?

3. МанойКиран, да. проверьте уникальность из 2 таблиц во время обновления.

4. Похоже, это должно сработать. Что такое $areaManager ? Включите весь соответствующий код и покажите, где находится этот код. Метод контроллера, я полагаю?

Ответ №1:

Быстрая проверка может быть чем-то вроде этого:

 $checkAreaManagers = DB::table('area_managers')-gt;where('email', '=', $request-gt;email)-gt;first(); $checkShopkeepers = DB::table('shopkeepers')-gt;where('email', '=', $request-gt;email)-gt;first();  if ($checkAreaManagers === null || $checkShopkeepers === null) {    // Proceed with the update    $areaManager-gt;email = $request-gt;email;  $areaManager-gt;save(); }  if ($checkAreaManagers !== null || $checkShopkeepers !== null) {    // Cancel the update (Your logic here)    dd('Duplicate found');  }   

Ответ №2:

вы должны создать роль с помощью этой команды:

php ремесленник делает:имя роли правила

затем в методе проходов задайте свой запрос, а затем используйте в валидаторе