私は、ユーザーが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";
}
これは正しい方法ですか?どちらが正しいのですか? ありがとうございます。