2016-11-01 24 views
0
私は

updateメソッド(laravel 5.3)の検証を行う方法

$this->validate($request, [ 
      'email' => 'required'|unique:users', 
      'adr' => 'required' 
     ]); 

しかし、私が更新する場合は、すべての時間は、そのユーザが既に取られていると言うので要件 に応じていない私は必要はありませんそのために使用しようと

電子メールアドレスを更新する 私はそれを望んでいない場合は、ユーザーが更新する必要があります電子メールアドレスを更新しなければならない場合は、

機能

{ 
$this->validate($request, [ 
     'place_holder' => 'required', 
     'word_list' => 'required', 
    ]); 


    $user = User::findOrFail($id); 
    $input = $request->all(); 
    $user->fill($input)->save(); 
    session()->flash('msg',trans('Successfully Updated.')); 
    return redirect()->route('user.index'); 
} 

答えて

0

アップデートの電子メールのあなたの検証は

'email' => 'required|email|unique:users,email,'.$user->id, 

ようでなければなりませんそれとも、としてそれを書くことができます。

use Illuminate\Validation\Rule; 

Validator::make($data, [ 
'email' => [ 
    'required', 
    Rule::unique('users')->ignore($user->id), 
    ], 
]); 

Docs

+0

$ user-> id、undefined @Amit Gupta –

+0

まず、 '$ user = User :: findOrFail($ user_id)'のような 'user'を見つけて、それをあなたのバリデーションルールで使う必要があります。更新フォームから '$ user_id'を取得している必要があります。 –

+0

同じ方法で作業しています... firstOrCreate/firstOrNewメソッド を使用する方法はありますか? @Amit Gupta –

0

あなたはまず、意味ログインユーザを変更したい場合は、認証によるログインユーザを見つける必要がある、

$userId = Auth::user()->id; 

認証が

use Illuminate\Support\Facades\Auth; 

その後、あなたはそれは、同じよう

'email' => 'required|email|unique:users,email,'.$userId.',id', 

を使用することができますですこのAuthを使用しているときは作業です。

他の方法では、経路で渡すことができます。ルート内

Route::put('user_profile/{user_profile_id}', ...); 

mywebsite.com/user_profile/1 

$userId = $this->routes(user_profile_id); 

'email' => 'required|email|unique:users,email,'.$userId.',id', 

ように私はそれはあなたを助ける、願っています。

関連する問題