2016-07-25 6 views
0

私は、ユーザーがusername、firstname、lastnameなどのプロフィールの詳細について入力する場所を持っています。上記は登録してビューに指示するとすぐに起こります。ユーザーはプロファイルの詳細を示す場合にのみ、残りの機能を使用するようにリダイレクトされます。ユーザーは、将来、プロファイルの詳細を更新することもできます。laravelのDBのデータ更新5.2

ここで、ユーザーが後で詳細情報の更新ページで詳細を更新したい場合、私は既に登録後に与えられた詳細をページに埋め込んでいます。ここでの問題は、ユーザー名が既に使用されているというフォームを送信するときです。ここでビュー

<div class="form-group{{ $errors->has('username') ? ' has-error' : '' }}"> 
<label class="col-md-4 control-label">User Name</label> 

<div class="col-md-6"> 
<input type="text" class="form-control" name="username" value="<?php echo \Auth::user()->username;?>"> 

@if ($errors->has('username')) 
<span class="help-block"> 
<strong>{{ $errors->first('username') }}</strong> 
</span> 
@endif 
</div> 
</div> 

のコードですが、私は、DB内の新しい行を作成していないが、私は、既存の列を更新していますし、まだそれが同じエラーがスローされます。ここに私のコントローラコードです。

`public function prof_details(Request $request) 
{ 
    $post = $request->all(); 

    $val=\Validator::make($request->all(), 

    [ 
     'firstname' => 'required', 
     'lastname' =>  'required', 
     'username' =>  'required | unique:users', 
     'phone'=>   'required', 
     'nationality' => 'required', 
     'dobmonth' =>  'required', 
     'dobyear' =>  'required', 
     'dobday' =>  'required', 
     'bio' =>   'required', 
     'topics' =>  'required', 

    ] 


    ); 

if ($val ->fails()) 
{ 

    return redirect()->back()->withErrors($val->errors()); 

}` 

else 
{ 


    $data = array(

     'firstname' => $post['firstname'] , 
     'lastname' => $post['lastname'], 
     'username' => $post['username'], 
     'phone' => $post['phone'], 
     'nationality' => $nationality, 
     'dobmonth' => $post['dobmonth'], 
     'dobyear' => $post['dobyear'], 
     'dobday' => $post['dobday'], 
     'topics' => implode(',', $post['topics']), 
     'bio' => $post['bio'], 


     ); 

    $updatedata = DB::table('users')->where('id',\Auth::user()->id) 
    ->update($data); 

    if ($updatedata>0) { 


     return redirect('home'); 
} 
else 
{ 
    return "something Went wrong"; 
} 

これは正しい方法ですか?どちらが正しいのですか? ありがとうございます。

答えて

0

'username' => 'required | unique:users,id,'.\Auth::user()->id,

それはあなたが更新しようとしているデータにチェックを回避しますように、三番目のパラメータとしてIDを挿入します。

0

ユーザー名の入力はフォームにあり、コードごとにユーザー名は更新されます。'username' => 'required |一意:ユーザーの

この場合、ユーザー名入力でテキストが変更されていない場合は、「username is already taken」というエラーが表示されます。

一般的なデータのみを更新フォームに残してください。ユーザー名を変更する場合は、ユーザー名のみを入力して別のビューを作成できます。

関連する問題